繁体   English   中英

以一组元组为值的字典理解

[英]Dictionary Comprehension with a set of Tuple as value

我有这个

dict_1 = {1:{("Apple",1),("Orange",1),("Banana",1),("Lemon",1)}}

我想要这个:

{"Apple","Orange","Banana","Lemon"}

这里的正确理解是什么。

我的尝试失败了,因为

TypeError:不可散列的类型:'set'

意味着我无法打开套装。

如果您在字典中只有一个键名1 ,您可以简单地使用

dict = {1:{("Apple",1),("Orange",1),("Banana",1),("Lemon",1)}}
{key for key, val in dict[1]} # used the 1 assuming its the only key

Output:

{"Apple","Orange","Banana","Lemon"}

编辑:

具有任意数量变量(键)的代码

dict = {1:{("Apple",1),("Orange",1),("Banana",1),("Lemon",1)},2:{("Apple",1),("Orange",1),("Banana",1),("Lemon",1)}}
resultArray = [{x for x, y in dict[eachkey]} for eachkey in {x for x, y in dict.items()} ]
print(resultArray)

Output:

[{'Orange', 'Apple', 'Lemon', 'Banana'}, {'Orange', 'Apple', 'Lemon', 'Banana'}]

编辑2:

代码:

from itertools import chain
dict = {1:{("Apple",1),("Orange",1),("Banana",1),("Lemon",1)},2:{("Juice",1),("Cocktail",1),("Milk",1),("Soup",1)}}
resultArray = [{x for x, y in dict[eachkey]} for eachkey in {x for x, y in dict.items()} ]
print(set().union(*(resultArray)))

Output:

{'Lemon', 'Soup', 'Milk', 'Cocktail', 'Banana', 'Apple', 'Orange', 'Juice'}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM