2010-09-23 66 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

相关问题