【发布时间】:2017-04-14 00:06:06
【问题描述】:
我有两个以集合为值的字典。
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中的item 3.将dct2的key作为新dct的key,将dict 1中的值对应项作为新dict的设定值
Dct3 = {'TypeZ':[1, 2, 3, 4, 5, 6, 7], 'TypeX':[8, 9, 10, 11, 12, 13, 14]}
我还想避免在 Dct3 的值中出现重复。
这是我目前正在努力处理的代码的 sn-p(其他 dicts 已经成功构建):
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。后者是我用来构建前两个字典的方法。
【问题讨论】:
-
您说这些值是集合,但您的代码将它们描述为列表(并且您讨论了重复数据删除)。值是
set类型还是list类型的值? -
您在 Dct2 声明中的
TypeX之后缺少' -
为什么
Dct3['TypeX']包含11?
标签: python dictionary collections