【问题标题】:How to add values from one dictionary to another based on matching keys?如何根据匹配键将值从一个字典添加到另一个字典?
【发布时间】:2019-06-19 19:35:55
【问题描述】:

我有两个具有匹配键和不同值的字典。我想将 a 的值添加到 b。

有些键在字典 a 但不在 b 中。我想跳过这些。

a = {1:"a", 2:"b", 3:"c", 4:"d"}
b = {1:"e", 2:"f", 3:"g"}



for k, v in a.items():
    if k in b.keys():
        list(b).append(v)
    else: print 'Could not locate key', k

我希望输出是 b = {1: ["e", "a"], 2: ["b", "f"], 3: ["g","c"]}

相反,这些值没有附加。我还尝试在 v 周围使用括号,它返回

TypeError: 'builtin_function_or_method' object has no attribute '__getitem__'

【问题讨论】:

  • 那些在b 中但不在a 中的键呢?是否要将这些键的值转换为列表?

标签: python dictionary append


【解决方案1】:
    a = {1:"a", 2:"b", 3:"c", 4:"d"}
    b = {1:"e", 2:"f", 3:"g"}

    for k, v in a.items():
        if k in b.keys():
            b[k] = [v,b[k]]
        else: print('Could not locate key', k)
    print(b)

output :
Could not locate key 4
{1: ['a', 'e'], 2: ['b', 'f'], 3: ['c', 'g']}

使用 b[k] = [v,b[k]] 代替 list(b).append(v)

list(b).append(v) 表示您正在创建字典 b 的键列表,然后将 v 附加到该列表

b[k] = [v,b[k]] 表示为键 k 创建字典 a 和 b 的值列表,并在键 k 处分配给字典 b

【讨论】:

    【解决方案2】:

    我认为这就是你想要的...我使用字符串作为原始值,但仍然可以使用列表。

    >>> a = {"1":"a", "2":"b", "3": "c", "4":"d"}
    >>> b = {"1":"e", "2":"f", "3":"g"}
    >>> for k, v in a.items():
    ...     if k in b:
    ...         b[k] = [a[k], b[k]]
    ... 
    >>> b
    {'1': ['a', 'e'], '2': ['b', 'f'], '3': ['c', 'g']}
    

    【讨论】:

      【解决方案3】:

      这是你想要的吗?

      a = {1:"a", 2:"b", 3:"c", 4:"d"}
      b = {1:"e", 2:"f", 3:"g"}
      c={}
      
      keys = set(list(a.keys())+list(b.keys()))
      
      for key in keys:
          items = []
          items += [a[key]] if key in a else []
          items += [b[key]] if key in b else []
          c[key]=items
      

      【讨论】:

        猜你喜欢
        • 2019-06-05
        • 1970-01-01
        • 2022-07-10
        • 2021-10-21
        • 2018-07-27
        • 1970-01-01
        • 1970-01-01
        • 2022-07-25
        • 1970-01-01
        相关资源
        最近更新 更多