[英]Searching and counting dictionary key value pairs
如果我有字典
dict = {'brown dogs':3, 'dog of white':4, 'white cats':1, 'white cat':9}
我如何
a)搜索關鍵子串
b)將所選值相加
所以我得到結果:
('dog', 7) and ('cat', 10)
您可以使用collections.Counter
。
from collections import Counter
d = {'brown dogs':3, 'dog of white':4, 'white cats':1, 'white cat':9}
substrings = ['dog', 'cat']
counter = Counter()
for substring in substrings:
for key in d:
if substring in key:
counter[substring] += d[key]
print(counter.items())
輸出:
[('dog', 7), ('cat', 10)]
使用字典來保留字幕:
dict = {'brown dogs':3, 'dog of white':4, 'white cats':1, 'white cat':9}
subs={'dog':0,'cat':0}
for sub in subs.keys():
for k,v in dict.items():
if sub in k:
subs[sub]+=v
print(subs)->{'dog': 7, 'cat': 10}
但是,如果您想自動猜測subs鍵,則xD可能會更困難!
這是一個替代解決方案:
d = {'brown dogs':3, 'dog of white':4, 'white cats':1, 'white cat':9}
substrings = ['dog', 'cat']
my_list = [(substr, sum([d[key] for key in d.iterkeys() if substr in key])) for substr in substrings]
print my_list
產量
[('dog', 7), ('cat', 10)]
因為需要練習,我會努力解決的!
mydict = {'brown dogs':3, 'dog of white':4, 'white cats':1, 'white cat':9}
mykeys = ['dog', 'cat', 'rhino']
sums_dict = {}
for mkey in mykeys:
for dkey in mydict.keys():
if mkey in dkey:
try:
sums_dict[mkey] += mydict[dkey]
except KeyError:
sums_dict[mkey] = mydict[dkey]
print(sums_dict)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.