2010-09-23 42 views
39

Làm cách nào để thêm cặp khóa, giá trị vào từ điển? .Bây giờ tôi đã đề cập đến định dạng sau?Cách thêm cặp khóa, giá trị vào từ điển?

{'1_somemessage': [[3L, 
        1L, 
        u'AAA', 
        1689544L, 
        datetime.datetime(2010, 9, 21, 22, 30), 
        u'gffggf'], 
        [3L, 
        1L, 
        u'BBB', 
        1689544L, 
        datetime.datetime(2010, 9, 21, 20, 30), 
        u'ffgffgfg'], 
        [3L, 
        1L, 
        u'CCC', 
        1689544L, 
        datetime.datetime(2010, 9, 21, 22, 30), 
        u'hjhjhjhj'], 
        [3L, 
        1L, 
        u'DDD', 
        1689544L, 
        datetime.datetime(2010, 9, 21, 21, 45), 
        u'jhhjjh']], 
'2_somemessage': [[4L, 
        1L, 
        u'AAA', 
        1689544L, 
        datetime.datetime(2010, 9, 21, 22, 30), 
        u'gffggf'], 
        [4L, 
        1L, 
        u'BBB', 
        1689544L, 
        datetime.datetime(2010, 9, 21, 20, 30), 
        u'ffgffgfg'], 
        [4L, 
        1L, 
        u'CCC', 
        1689544L, 
        datetime.datetime(2010, 9, 21, 22, 30), 
        u'hjhjhjhj'], 
        [4L, 
        1L, 
        u'DDD', 
        1689544L, 
        datetime.datetime(2010, 9, 21, 21, 45), 
        u'jhhjjh']]} 
+1

Sao chép có thể có của [Thêm khóa mới vào một từ điển?] (https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary) –

Trả lời

75

Thêm một chìa khóa, cặp giá trị vào từ điển

aDict = {} 
aDict[key] = value 

Ý anh là gì bằng cách thêm năng động.

+0

Cảm ơn nó là worki ng..Tôi có nghĩa là kết quả truy vấn. Bạn có biết đó là những mối quan tâm sử dụng python .. tôi không biết am mới của công nghệ này trước khi tôi đã làm việc trong dotnet. – Krishnasamy

+0

@Krishnasamy: Nếu bạn đã từng làm việc trên dotnet, Python sẽ rất vui khi được làm việc cùng. Nó là linh hoạt như dotnet và java, nếu không nhiều hơn – pyfunc

6

Tôi không chắc chắn ý của bạn là "động". Nếu bạn có nghĩa là thêm các mục vào một từ điển trong thời gian chạy, nó là dễ dàng như dictionary[key] = value.

Nếu bạn muốn tạo ra một từ điển với phím, giá trị để bắt đầu với (tại thời gian biên dịch) sau đó sử dụng (bất ngờ!)

dictionary[key] = value 
3

Nếu bạn muốn thêm một kỷ lục mới trong hình thức

newRecord = [4L, 1L, u'DDD', 1689544L, datetime.datetime(2010, 9, 21, 21, 45), u'jhhjjh'] 

để messageName nơi messageName theo hình thức X_somemessage có thể, nhưng không nhất thiết phải có trong từ điển của bạn, sau đó làm theo cách này:

myDict.setdefault(messageName, []).append(newRecord) 

Bằng cách này, nó sẽ được thêm vào một messageName hiện có hoặc danh sách mới sẽ được tạo cho một messageName mới.

+0

Hoặc bạn có thể bắt đầu với 'defaultdict (list)'. –

1

Có thể có một số thời gian này cũng sẽ rất hữu ích

import collections 
#Write you select statement here and other things to fetch the data. 
if rows: 
      JArray = [] 
      for row in rows: 

       JArray2 = collections.OrderedDict() 
       JArray2["id"]= str(row['id']) 
       JArray2["Name"]= row['catagoryname'] 
       JArray.append(JArray2) 

      return json.dumps(JArray) 

Kết quả ví dụ:

[ 
    { 
     "id": 14 
     "Name": "someName1" 
    }, 
    { 
     "id": 15 
     "Name": "someName2" 
    } 
] 
7

Tôi đã ở đây tìm kiếm một cách để thêm một cặp khóa/giá trị (s) như là một nhóm - trong trường hợp của tôi đó là đầu ra của một cuộc gọi hàm, vì vậy việc thêm cặp bằng cách sử dụng dictionary[key] = value sẽ yêu cầu tôi biết tên của khóa.

Trong trường hợp này, bạn có thể sử dụng phương pháp cập nhật: dictionary.update(function_that_returns_a_dict(*args, **kwargs)))

Hãy coi chừng, nếu dictionary đã có chứa một trong các phím, giá trị ban đầu sẽ được ghi đè.

11

Để tham khảo nhanh chóng, tất cả các phương pháp sau đây sẽ thêm một khóa mới 'a' nếu nó không tồn tại hoặc nó sẽ cập nhật các cặp hiện có chìa khóa giá trị với giá trị mới chào bán:

data['a']=1 

data.update({'a':1}) 

data.update(dict(a=1)) 

data.update(a=1) 

Bạn có thể cũng trộn chúng lên, ví dụ, nếu khóa 'c' có trong dữ liệu nhưng 'd' thì không, phương pháp sau sẽ cập nhật 'c' và thêm 'd'

data.update({'c':3,'d':4}) 
+0

Tại sao bỏ phiếu xuống?Câu trả lời là cố gắng thêm thông tin hữu ích để người xem có thể có câu trả lời thay thế mà IMHO toàn diện hơn, liệu các quý ông/phụ nữ có thể bỏ phiếu xin làm rõ? – Zhenhua

+0

Bạn không cần phải trả lời câu hỏi này vì nó trùng lặp - cách thích hợp để xử lý câu hỏi đó là gắn cờ nó như một bản dupe - xem thêm thông tin ở đó [Làm cách nào để xử lý các câu hỏi trùng lặp?] (Https: //meta.stackexchange .com/question/10841/how-should-duplicate-questions-be-handling) –

+1

@Zhenhua Tôi tìm thấy câu trả lời này hữu ích upvoted. – Shek

Các vấn đề liên quan