python - 获取嵌套字典中唯一值的列表(或集合)

标签 python list dictionary set

我想知道是否有更优雅/pythonic 的方式来执行以下操作。假设我有一个嵌套字典:

orders = {'peter': {'food': 'pizza', 'drink': 'soda'}, 'paul': {'food': 'taco', 'drink': 'soda'},'mary': {'food': 'pizza', 'drink': 'water'}}

我想获得一个列表,其中包含每个人的独特“食物”项目,即['披萨', '炸 Jade 米饼']

这是最简单的方法吗?

foodList = []
for i in orders.keys():
    foodList.append(orders[i]['food'])
s = set(foodList)

最佳答案

使用 set comprehension .

>>> {orders[i]['food'] for i in orders}
{'pizza', 'taco'}

如果 food 的值是列表或元组,您可以在集合理解中使用嵌套循环。

>>> orders = {'peter': {'food': ['pizza','fries'], 'drink': 'soda'}, 'paul': {'food': ['taco'], 'drink': 'soda'}}
>>> {j for i in orders for j in orders[i]['food']}
{'pizza', 'taco', 'fries'}

您甚至可以使用 operator.itemgetterPadraic所述.

>>> from operator import itemgetter 
>>> set(map(itemgetter("food"), orders.values()))
{'pizza', 'taco'}

同样,如果食物的值是一个列表,您可以使用 chain .

>>> from itertools import chain
>>> set(chain(*map(itemgetter("food"), orders.values())))
{'pizza', 'taco', 'fries'}

关于python - 获取嵌套字典中唯一值的列表(或集合),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34110537/

相关文章:

Python追加列表重复最后一个元素?

python - 检查嵌套字典中的两个内部键是否重复并仅检索最高值

json - 将map转换为json会在golang中给出很多整数

python - 如何使用 python 将原始 json 数据 [作为 python 字典] 写入 Google 云存储?

python - 是否可以在 Python 中的 Azure Function Linux 消费计划中保存临时文件?

python - 如何将元组列表展平为 pythonic 列表

python - 在没有括号或其他符号的文本文件中写入列表或数组

python - 在字典中获取最大值的键?

python - 如何在 Flask 中使用 Flot 图表?

Python初学者关于练习题的问题