gpt4 book ai didi

python - 从两个现有的字典创建一个字典

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:17 25 4
gpt4 key购买 nike

我有两个字典,它们的值是集合。

Dct1 = {'a':[1, 2, 3], 'b':[4, 5, 6, 7], 'c':[8, 9, 10], 'd':[11, 12, 13, 14]}
Dct2 = {'TypeZ':['a', 'b'], 'TypeX':['c', 'd']}

我想创建另一个字典:1. 迭代Dct1中的值的项2.检查item的value的key是否是Dct2的values中的item3.将dct2的key作为新dct的key,将dict一中value的对应项作为新dict的设定值

Dct3 = {'TypeZ':[1, 2, 3, 4, 5, 6, 7], 'TypeX':[8, 9, 10, 11, 12, 13, 14]}

我还想避免 Dct3 的值出现重复。

这是我目前正在努力处理的代码片段(其他字典已经成功构建):

RateByType = {}

for key, item in RoRaDct.items():
for i, j in TpRtDct.items():
for x in item:
for y in j:
if key == y:
RateByType[i].add(item)

但是它产生了一个关键错误。我尝试过使用 defaultdict(set) 但得到 TypeError: unhashable type: set。后者是我用来构建前两个字典的方法。

最佳答案

使用 Dct2 的键创建一组,然后为 Dct3 创建一个 defaultdict,循环遍历 Dct2 > 的键及其对应的值:

import collections
Dct1 = {'a':[1,2,3],'b':[4,5,6,7],'c':[8,9,10],'d':[12,12,13,14]}
Dct2 = {'TypeZ':['a','b'],'TypeX':['c','d']}
s = set(Dct2)
d = collections.defaultdict(list)
for key in Dct2:
for k in Dct2[key]:
d[key].extend(Dct1[k])

结果:

>>> import pprint
>>> pprint.pprint(d)
{'TypeX': [8, 9, 10, 12, 12, 13, 14],
'TypeZ': [1, 2, 3, 4, 5, 6, 7]}

关于python - 从两个现有的字典创建一个字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40875286/

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