首页 > 解决方案 > 以一组元组为值的字典理解

问题描述

我有这个

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

我想要这个:

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

这里的正确理解是什么。

我的尝试失败了,因为

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

意味着我无法打开套装。

标签: pythondictionary-comprehension

解决方案


如果您在字典中只有一个键名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

输出:

{"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)

输出:

[{'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)))

输出:

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

推荐阅读