gpt4 book ai didi

python - 如果一个字典中的键与另一字典中的键匹配,如何返回新字典?

转载 作者:IT老高 更新时间:2023-10-28 21:13:01 24 4
gpt4 key购买 nike

目前,我有一个字典,它的键代表一个邮政编码,值也是一个字典。

d = { 94111: {'a': 5,  'b': 7,  'd': 7}, 
95413: {'a': 6, 'd': 4},
84131: {'a': 5, 'b': 15, 'c': 10, 'd': 11},
73173: {'a': 15, 'c': 10, 'd': 15},
80132: {'b': 7, 'c': 7, 'd': 7} }

然后是第二个字典,它关联邮政编码属于哪个州。

states = {94111: "TX", 84131: "TX", 95413: "AL", 73173: "AL", 80132: "AL"}

如果字典 states 中的邮政编码与 db 中的某个键匹配,那么它将汇总这些值并将其放入新字典中,就像预期的输出一样.

预期输出:

{'TX': {'a': 10, 'b': 22, 'd': 18, 'c': 10}, 'AL': {'a': 21, 'd': 26, 'c': 17, 'b': 7}}

到目前为止,这是我正在寻找的方向,但我不确定两个键何时匹配,如何创建一个看起来像预期输出的字典。

def zips(d, states):
result = dict()
for key, value in db.items():
for keys, values in states.items():
if key == keys:


zips(d, states)

最佳答案

使用 collections 模块

例如:

from collections import defaultdict, Counter

d = { 94111: {'a': 5, 'b': 7, 'd': 7},
95413: {'a': 6, 'd': 4},
84131: {'a': 5, 'b': 15, 'c': 10, 'd': 11},
73173: {'a': 15, 'c': 10, 'd': 15},
80132: {'b': 7, 'c': 7, 'd': 7} }

states = {94111: "TX", 84131: "TX", 95413: "AL", 73173: "AL", 80132: "AL"}

result = defaultdict(Counter)
for k,v in d.items():
if k in states:
result[states[k]] += Counter(v)
print(result)

输出:

defaultdict(<class 'collections.Counter'>, {'AL': Counter({'d': 26, 'a': 21, 'c': 17, 'b': 7}), 
'TX': Counter({'b': 22, 'd': 18, 'a': 10, 'c': 10})})

关于python - 如果一个字典中的键与另一字典中的键匹配,如何返回新字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54459155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com