2010-09-23 89 views
39

如何將鍵值對添加到字典?下面我提到了以下格式?如何將鍵值對添加到字典中?

{'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

可能出現[Add new keys to一個字典?](https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary) – 2017-12-21 03:33:26

回答

75

添加鍵,值對字典

aDict = {} 
aDict[key] = value 

你說的動態添加的意思。

+0

感謝它的工作ng ..我的意思是查詢的結果集。你知道哪些是使用python的擔憂..我不知道這是我在dotnet工作之前的新技術。 – Krishnasamy 2010-09-23 08:19:52

+0

@Krishnasamy:如果你之前在dotnet上工作過,Python會很樂意與之合作。它與dotnet和java一樣通用,如果不是更多 – pyfunc 2010-09-23 08:23:56

6

我不確定您的意思是「動態」。如果您的意思是在運行時向字典中添加項目,它就像dictionary[key] = value一樣簡單。

如果你想創建密鑰的字典,值來啓動(在編譯時),然後使用(驚喜!)

dictionary[key] = value 
3

如果你想在表單中添加一個新的記錄

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

messageName其中messageName形式X_somemessage可以,但並不一定要在你的字典,然後再去做這樣:

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

這樣它會被附加到現有的messageName或將爲新的messageName創建一個新的列表。

+0

或者,您可以從'defaultdict(list)'開始。 – 2010-09-23 08:08:48

1

可能需要一段時間,這也將有利於

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) 

輸出示例:

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

我來到這裏尋找一種方式來添加一個鍵/值對(S)爲一組 - 在我的情況下,它是函數調用的輸出,因此使用dictionary[key] = value添加對將要求我知道密鑰的名稱。

在這種情況下,你可以使用更新方法: dictionary.update(function_that_returns_a_dict(*args, **kwargs)))

當心,如果dictionary已經包含的關鍵之一,原來的值將被覆蓋。

11

對於快速參考,所有下面的方法將添加一個新的密鑰「A」,如果不存在,否則將更新爲新值現有的鍵值對獻:

data['a']=1 

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

data.update(dict(a=1)) 

data.update(a=1) 

你可以例如,如果密鑰'c'在數據中但'd'不是,則以下方法將更新'c'並添加'd'

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

爲什麼投下了票?答案是試圖添加有用的信息,以便觀衆可以有一個替代的答案,恕我直言,是更全面的,紳士/女性誰可以投票澄清? – Zhenhua 2017-08-07 20:58:26

+0

你不需要回答這個問題,因爲它的重複 - 處理它的恰當方式是將它標記爲一個笨蛋 - 在那裏查看更多信息[應該如何處理重複問題](https://meta.stackexchange .com/questions/10841/how-should-duplicate-questions-be-handled) – 2017-08-13 14:18:08

+1

@振華我發現這個答案有用upvoted。 – Shek 2017-10-03 16:09:50

相關問題