我正在創建一個戰爭游戲,我有這本武器字典,以及它們對另一種型別的部隊造成的傷害。
另外,我有一個串列,其中存盤了字典中的鍵。
weapon_specs = {
'rifle': {'air': 1, 'ground': 2, 'human': 5},
'pistol': {'air': 0, 'ground': 1, 'human': 3},
'rpg': {'air': 5, 'ground': 5, 'human': 3},
'warhead': {'air': 10, 'ground': 10, 'human': 10},
'machine gun': {'air': 3, 'ground': 3, 'human': 10}
}
inv = ['rifle', 'machine gun', 'pistol']
我需要得到這個輸出:
{'air': 4, 'ground': 6, 'human': 18}
我試過這個:
for i in weapon_specs:
for k in inv:
if i == k:
list.update(weapon_specs[k])
uj5u.com熱心網友回復:
您可以使用collections.Counter:
from collections import Counter
count = Counter()
for counter in [weapon_specs[weapon] for weapon in inv]:
count = counter
out = dict(count)
如果你不想使用collections庫,你也可以這樣做:
out = {}
for weapon in inv:
for k,v in weapon_specs[weapon].items():
out[k] = out.get(k, 0) v
輸出:
{'air': 4, 'ground': 6, 'human': 18}
uj5u.com熱心網友回復:
無需匯入任何東西。你可以只用兩個回圈來映射字典。
out = {'air': 0, 'ground': 0, 'human': 0}
for weapon in inv:
for k, v in weapon_specs[weapon].items():
out[k] = v
print(out)
輸出:
{'air': 4, 'ground': 6, 'human': 18}
uj5u.com熱心網友回復:
首先根據你的串列取你字典的一個子集。
然后使用Counter
from collections import Counter
subset = {k: weapon_specs[k] for k in inv}
out = dict(sum((Counter(d) for d in subset.values()), Counter()))
結果
{'air': 4, 'ground': 6, 'human': 18}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/387305.html
上一篇:如何使用C語言將 添加為字串?
