python - 如何对列表中的嵌套字典进行排序?
问题描述
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}}]
解决方案
由于相当复杂的数据性质,您可以在列表理解(遍历所有国家)中使用字典理解(每个国家只保留最低(基于其价格)住宿):
>>> [{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}}]
资源: