【问题标题】:How to add key,value pair to dictionary? [duplicate]如何将键值对添加到字典中? [复制]
【发布时间】:2011-04-16 03:10:10
【问题描述】:

如何将键值对添加到字典中?下面我提到了以下格式?

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

【问题讨论】:

    标签: python


    【解决方案1】:

    向字典中添加键、值对

    aDict = {}
    aDict[key] = value
    

    动态加法是什么意思。

    【讨论】:

    • 谢谢它的工作..我的意思是查询的结果集。你知道使用 python 有哪些问题吗?在我在 dotnet 工作之前,我不知道这项技术是新手。
    • @Krishnasamy:如果您之前曾在 dotnet 上工作过,那么使用 Python 会很愉快。它与 dotnet 和 java 一样多才多艺,甚至更多
    • 如果我在 for 循环中使用它而不是它只给出最后一条记录.. 如何在循环中获取所有键值对
    【解决方案2】:

    为了快速参考,以下所有方法都将添加一个新的键“a”,如果它不存在,或者它会使用提供的新值更新现有的键值对:

    data['a']=1  
    
    data.update({'a':1})
    
    data.update(dict(a=1))
    
    data.update(a=1)
    

    您也可以将它们混合在一起,例如,如果 key 'c' 在 data 中但 'd' 不在,则以下方法将更新 'c' 并添加 'd'

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

    【讨论】:

    • 为什么投反对票?答案是尝试添加有用的信息,以便观众可以有一个更全面的替代答案,恕我直言,否决投票的绅士/女士可以澄清一下吗?
    • 你不需要回答这个问题,因为它是重复的 - 处理它的适当方法是将其标记为欺骗 - 在那里查看更多信息How should duplicate questions be handled?
    • @Zhenhua 我发现这个答案很有用。
    • 这个答案比其他答案更有帮助。
    • SO 真的需要想办法让事情变得更好。这被否决为重复。但这是用户搜索时出现的第一件事。否决票然后开始更多的对话,这导致这个答案的受欢迎程度进一步上升,从而隐藏了原来的答案。如果这个答案不存在,我永远不会找到原始答案。那么为什么不完全删除这个问题呢?
    【解决方案3】:

    我不确定您所说的“动态”是什么意思。如果您的意思是在运行时将项目添加到字典中,那么就像dictionary[key] = value 一样简单。

    如果你想创建一个以键、值开头的字典(在编译时)然后使用(惊喜!)

    dictionary[key] = value
    

    【讨论】:

      【解决方案4】:

      我来这里是为了寻找一种将键/值对添加为组的方法 - 在我的情况下,它是函数调用的输出,因此使用 dictionary[key] = value 添加该对需要我知道键的名称。

      在这种情况下,您可以使用更新方法: dictionary.update(function_that_returns_a_dict(*args, **kwargs)))

      请注意,如果dictionary 已经包含其中一个键,则原始值将被覆盖。

      【讨论】:

        【解决方案5】:

        这可能会有所帮助

        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"
            }
        ]
        

        【讨论】:

          【解决方案6】:

          如果要在表单中添加新记录

          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 创建一个新列表。

          【讨论】:

          • 您也可以从defaultdict(list)开始。
          【解决方案7】:

          插入/追加到字典

          {"0": {"travelkey":"value", "travelkey2":"value"},"1":{"travelkey":"value","travelkey2":"value"}} 
          
          travel_dict={} #initialize dicitionary 
          travel_key=0 #initialize counter
          
          if travel_key not in travel_dict: #for avoiding keyerror 0
              travel_dict[travel_key] = {}
          travel_temp={val['key']:'no flexible'}  
          travel_dict[travel_key].update(travel_temp) # Updates if val['key'] exists, else adds val['key']
          travel_key=travel_key+1
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-02-14
            • 1970-01-01
            • 2014-04-13
            • 1970-01-01
            • 1970-01-01
            • 2022-01-18
            • 1970-01-01
            • 2016-01-23
            相关资源
            最近更新 更多