【问题标题】:Dictionary Comprehension with a set of Tuple as value以一组元组为值的字典理解
【发布时间】:2021-03-26 05:14:12
【问题描述】:

我有这个

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

我想要这个:

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

这里的正确理解是什么。

我的尝试失败了,因为

TypeError: unhashable type: 'set'

表示我无法打开套装。

【问题讨论】:

  • {x for x, y in dict_1[1]}?
  • 谢谢以及如何处理字典中的多个键

标签: python dictionary-comprehension


【解决方案1】:

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

【讨论】:

  • 谢谢你,你猜我的下一个问题,意味着具有相同结构的更多键。如何处理多个键?
  • 如何处理dict_2 = {1:{("Apple",1),("Orange",1),("Banana",1),("Lemon",1)} , \ 2:{("果汁",1),("鸡尾酒",1),("牛奶",1),("汤",1)}, \ 3: set(), \ 4:{( "早餐",1),("午餐",1),("晚餐",1)} }
  • @Easytoday 查看我对您上面所问问题的答案所做的编辑。如果解决了,请务必接受答案。
  • 再次感谢您,您的结果是集合列表,是否意味着只获取集合而不是列表?我尝试在您的理解中用大括号替换括号,但我再次遇到相同的错误 TypeError: unhashable type: 'set'。
  • 你的预期结果是什么?,一套所有的东西?
猜你喜欢
  • 2021-03-21
  • 2012-10-19
  • 1970-01-01
  • 2012-08-19
  • 2021-05-20
  • 2014-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多