如果键匹配条件,则将字典的值合并为一个

时间:2016-06-28 20:07:58

标签: python dictionary

我有一个名为tempDict的字典,其填充方式为:

tempDict = {'a': 100, 'b': 200, 'c': 120, 'b_ext1': 4, 'd': 1021, 'a_ext1': 21, 'f_ext1': 12}

在我的设置中,我需要遍历键,如果对于任何带有'_ext1'后缀的键,我想重写或创建一个保持未更改键的新词典(最好没有'ext1')但是合并的值。

即:

newDict = {'a': 121, 'b': 204, 'c': 120, 'd': 1021, 'f_ext1':12}

请注意,字典中的最后一个条目应该保持不变,因为没有'f' unsuffixed '_ext1'

值本身不是整数,但操作类似。

有没有人有任何想法?

2 个答案:

答案 0 :(得分:1)

newDict = {}
for k in tempDict:
    if k.endswith("_ext1") and k[:-5] in tempDict:
       newDict[k[:-5]] = newDict.get(k[:-5],0)+tempDict[k]
    else:
       newDict[k] = newDict.get(k,0)+tempDict[k]

答案 1 :(得分:1)

迭代排序顺序中的键(项)并求和或添加值。这可行,因为"a""f"之类的键在" a_ext1""f_ext1"之前排序:

>>> d = {}
>>> for k, v in sorted(tempDict.items()):
...     if k[0] in d:
...         d[k[0]] += v
...     else:
...         d[k] = v
... 
>>> d
{'a': 121, 'c': 120, 'b': 204, 'd': 1021, 'f_ext1': 12}