首页 > 解决方案 > 如何对列表中的嵌套字典进行排序?

问题描述

data = [{'USA': [{'accommodations': '2 BR ','Price': 1245},
                 {'accommodations': '5 BR ','Price': 1045}]},
        {'Dubai': [{'accommodations': '2 BR | Sleeps 6','Price': 966},
                   {'accommodations': '5 BR | Sleeps 6','Price': 800}]}]

我想根据价格对上述数据进行排序。

我知道我必须做这样的事情,但我因为嵌套的字典和列表而感到困惑。

 sorted(data, key=lambda k: k["Price"])

此外,需要排序列表的唯一第一个(即最小值)值条目。

预期输出:

data = [{'usa': {'accommodations': '5 BR ','Price': 1045}},
        {'Dubai':{'accommodations': '5 BR | Sleeps 6','Price': 800}}]

标签: pythonlistsortingdictionary

解决方案


由于相当复杂的数据性质,您可以在列表理解(遍历所有国家)中使用字典理解(每个国家只保留最低(基于其价格)住宿):

>>> [{k: min(v, key=lambda x: x["Price"]) for k, v in item.items()} for item in data]
[{'USA': {'accommodations': '5 BR ', 'Price': 1045}}, {'Dubai': {'accommodations': '5 BR | Sleeps 6', 'Price': 800}}]

资源


推荐阅读