簡體   English   中英

搜索和計數字典鍵值對

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM