我有两个dicts,它们的值是set。在
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检查项值的键是否为Dct2值中的项 三。使用dct2的键作为新dct的键,dict one中值的对应项作为新dict的设置值
^{pr2}$我还想避免Dct3的值重复。在
下面是我目前正在努力解决的代码片段(其他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:unhable type:set。后者是我用来构建前两个dict的方法。在
对于
Dct2
中的每个键、值对,我们将该键映射到由Dct1
中的键的成员元素映射到的集合的并集。在编辑:解释
^{pr2}$是一个dictionary comprehension,它重新创建
Dct2
。在是我们用来建造这套装置的,但是让我们从里到外看它。在
尝试访问
Dct1[x]
并返回它。如果dict没有键x
,则返回一个空列表[]
获取上面
Dct1.get
的结果并将其转换为一个集合。在定义一个匿名函数(即它没有名字)。{{cd5>函数只需要使用
map
是一个函数,它接受另一个函数(在本例中是lambda函数)和一个iterable(类似于列表),然后生成一个iterable,将该函数应用于输入iterable的每个元素。在此上下文中的}
*
运算符用于解压缩ITerable。所以它接受一个像[1, 2, 3]
这样的iterable并将add(*[1, 2, 3])
转换成{set.union
是一个函数,它接受多个集合并计算它们的并集,基本上将它们全部相加。在用
Dct2
的键创建一个集合,然后为Dct3
创建一个defaultdict
,循环Dct2
的键及其相应的值:结果:
^{pr2}$相关问题 更多 >
编程相关推荐