【问题标题】:iterating dictionaries in Python 3.x [duplicate]Python 3.x 中的迭代字典 [重复]
【发布时间】:2017-02-12 23:40:19
【问题描述】:

我正在尝试在 Python 中处理来自两个不同字典的值。 我需要做的是对两个字典中具有相同键的值进行操作。

例如,如果字典是:

d1 = {1:30, 2:20, 3:30, 5:80} 
d2 = {1:40, 2:50, 3:60, 4:70, 6:90}

我需要从每个字典中的键 123 添加值。

我正在尝试创建一个可迭代的值,但是,当我尝试使用如下行的值扩展一个空的可迭代时:

sameKeys.extend(d1[i]))

我得到一个错误键。我尝试了许多不同的语法,但都没有奏效。

【问题讨论】:

  • sameKeys 到底是什么?
  • 编辑你的问题,让你的意图更清晰,sameKeys 是什么?它应该包含什么?到目前为止,您尝试了什么?
  • 您是否将它们添加到新的字典中?对第一个?还是直接打印结果?
  • 我想你正在尝试这样做stackoverflow.com/questions/39805266/…
  • 感谢所有回复并指出类似问题的人。我很抱歉重复了一个问题。在问之前我已经搜索了好几次,但没有找到与我类似的问题,因为我卡在了错误键中。我知道我想做什么,但不知道为什么它不起作用。这是我第一次写代码,如有不便请见谅

标签: python python-3.x dictionary key iteration


【解决方案1】:

你可以这样试试,

for i,j in zip(d1.items(),d2.items()):
    if i[0] == j[0]:
        print i[1]+j[1]

结果

70
70
90

【讨论】:

    【解决方案2】:

    遍历任何字典。检查第二个列表中是否存在密钥。如果存在,请输入新的字典。下面是示例:

    >>> d1 = {1:30, 2:20, 3:30, 5:80}
    >>> d2 = {1:40, 2:50, 3:60, 4:70, 6:90}
    >>> d3 = {}
    >>> for key, value in d1.items():
    ...     if key in d2:
    ...         d3[key] = value + d2[key]
    ...
    >>> d3
    {1: 70, 2: 70, 3: 90}
    >>>
    

    【讨论】:

      【解决方案3】:

      这是一种选择:

      d1 = {1:30, 2:20, 3:30, 5:80}
      d2 = {1:40, 2:50, 3:60, 4:70, 6:90}
      
      dlist = [d1, d2]
      
      
      # As a dict comprehension
      result = {k: sum(d[k] for d in dlist)
                for k in set.intersection(*[set(d) for d in dlist])}
      print result
      
      # Same as above, but as for loops
      result = {}
      repeated_keys = set(d1)
      for d in dlist:
          repeated_keys &= set(d)
      for k in repeated_keys:
          result[k] = 0
          for d in dlist:
              result[k] += d[k]
      print result
      

      【讨论】:

      • 由于这是 Python 3,您可以直接将键作为集合使用。 {}.keys() 是一个集合。
      猜你喜欢
      • 1970-01-01
      • 2020-08-22
      • 2012-07-07
      • 2011-04-06
      • 2017-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多