我有一个名为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'
值本身不是整数,但操作类似。
有没有人有任何想法?
答案 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}