0

我有一本这样的字典:

dict1={'a':4,'d':2}

我有一个这样的字典列表:

diclist=[{'b':3,'c':3},{'e':1,'f':1}]

作为输出,我想让 dict1 像这样:

dict1={'a':4,'b':3,'c':3,'d':2,'e':1,'f':1}

所以,我需要

  1. 比较 dict1 的值和 dictlist 的值
  2. 如果 dictlist 中某个 dict 的值小于 dict1 的值,则将该 dict 插入到 dict1
  3. 在 dictlist 中迭代 2

这可能很容易,但是,如果您愿意为此提供帮助,我们将不胜感激。

4

3 回答 3

1

由于您的示例中的键都是唯一的,因此与仅合并所有字典有什么不同?

dict1 = {'a': 4, 'd': 2}
diclist = [{'b': 3, 'c': 3}, {'e': 1, 'f': 1}]
for d in diclist:
    dict1.update(d)

这是一个通用的方法。考虑在未来提供更全面的示例

>>> dict1={'a':4,'d':2}
>>> diclist=[{'b':3,'c':3},{'e':1,'f':1}]
>>> 
>>> for d in diclist:
...  for k, v in d.items():
...   if k not in dict1 or v < dict1[k]:
...    dict1[k] = v
... 
>>> dict1
{'a': 4, 'c': 3, 'b': 3, 'e': 1, 'd': 2, 'f': 1}
于 2013-05-01T00:35:01.627 回答
0
for d in diclist:  # iterate over the dicts
    for k, v in d.items():  # iterate over the elements
         v2 = dict1.set_default(k, v)  # set the value if the key does not exist
                                       # and return the value (existing or newly set)
         if v < v2:  # compare with the existing value and the new value
             dict1[k] = v

这可能是最简洁和可读的。

于 2013-05-01T00:36:46.220 回答
0

像这样的东西:

In [15]: dict1={'a':4,'d':2}

In [16]: diclist=[{'b':3,'c':3},{'e':1,'f':1}]

In [17]: for dic in diclist:
    for key,value in dic.items():
        val=dict1.get(key,float("inf")) #fetch the value from dict1 if key is not found then return infinity
        if value < val:
            dict1[key] = value

In [18]: dict1
Out[18]: {'a': 4, 'b': 3, 'c': 3, 'd': 2, 'e': 1, 'f': 1}
于 2013-05-01T00:39:19.283 回答