python - 从有序字典中过滤掉项目

标签 python python-3.x dictionary ordereddictionary

对于下面的有序字典,我怎样才能只打印 1)“价格”及其值(value) 2)按照对应的'room_id'降序排列

[OrderedDict([('room_id', '1133718'), ('survey_id', '1280'), ('host_id', '6219420'), ('room_type', 'Shared room'), ('country', ''), ('city', 'Singapore'), ('borough', ''), ('neighborhood', 'MK03'), ('reviews', '9'), ('overall_satisfaction', '4.5'), ('accommodates', '12'), ('bedrooms', '1.0'), ('bathrooms', ''), ('price', '74.0'), ('minstay', ''), ('last_modified', '2017-05-17 09:10:25.431659'), ('latitude', '1.293354'), ('longitude', '103.769226'), ('location', '0101000020E6100000E84EB0FF3AF159409C69C2F693B1F43F')]), OrderedDict([('room_id', '3179080'), ('survey_id', '1280'), ('host_id', '15295886'), ('room_type', 'Shared room'), ('country', ''), ('city', 'Singapore'), ('borough', ''), ('neighborhood', 'TS17'), ('reviews', '15'), ('overall_satisfaction', '5.0'), ('accommodates', '12'), ('bedrooms', '1.0'), ('bathrooms', ''), ('price', '77.0'), ('minstay', ''), ('last_modified', '2017-05-17 09:10:24.216548'), ('latitude', '1.310862'), ('longitude', '103.858828'), ('location', '0101000020E6100000E738B709F7F659403F1BB96E4AF9F43F')]), OrderedDict([('room_id', '15303457'), ('survey_id', '1280'), ('host_id', '97053568'), ('room_type', 'Shared room'), ('country', ''), ('city', 'Singapore'), ('borough', ''), ('neighborhood', 'MK05'), ('reviews', '0'), ('overall_satisfaction', '0.0'), ('accommodates', '14'), ('bedrooms', '1.0'), ('bathrooms', ''), ('price', '60.0'), ('minstay', ''), ('last_modified', '2017-05-17 09:10:16.969900'), ('latitude', '1.333744'), ('longitude', '103.764612'), ('location', '0101000020E610000044882B67EFF0594093C7D3F20357F53F')])]

最佳答案

给定 OrderedDicts 列表:

from collections import OrderedDict
li=[OrderedDict([('room_id', '1133718'), ('survey_id', '1280'), ('host_id', '6219420'), ('room_type', 'Shared room'), ('country', ''), ('city', 'Singapore'), ('borough', ''), ('neighborhood', 'MK03'), ('reviews', '9'), ('overall_satisfaction', '4.5'), ('accommodates', '12'), ('bedrooms', '1.0'), ('bathrooms', ''), ('price', '74.0'), ('minstay', ''), ('last_modified', '2017-05-17 09:10:25.431659'), ('latitude', '1.293354'), ('longitude', '103.769226'), ('location', '0101000020E6100000E84EB0FF3AF159409C69C2F693B1F43F')]), OrderedDict([('room_id', '3179080'), ('survey_id', '1280'), ('host_id', '15295886'), ('room_type', 'Shared room'), ('country', ''), ('city', 'Singapore'), ('borough', ''), ('neighborhood', 'TS17'), ('reviews', '15'), ('overall_satisfaction', '5.0'), ('accommodates', '12'), ('bedrooms', '1.0'), ('bathrooms', ''), ('price', '77.0'), ('minstay', ''), ('last_modified', '2017-05-17 09:10:24.216548'), ('latitude', '1.310862'), ('longitude', '103.858828'), ('location', '0101000020E6100000E738B709F7F659403F1BB96E4AF9F43F')]), OrderedDict([('room_id', '15303457'), ('survey_id', '1280'), ('host_id', '97053568'), ('room_type', 'Shared room'), ('country', ''), ('city', 'Singapore'), ('borough', ''), ('neighborhood', 'MK05'), ('reviews', '0'), ('overall_satisfaction', '0.0'), ('accommodates', '14'), ('bedrooms', '1.0'), ('bathrooms', ''), ('price', '60.0'), ('minstay', ''), ('last_modified', '2017-05-17 09:10:16.969900'), ('latitude', '1.333744'), ('longitude', '103.764612'), ('location', '0101000020E610000044882B67EFF0594093C7D3F20357F53F')])]

你可以这样做:

>>> li2=[OrderedDict([('room_id',od['room_id']),('price',od['price'])]) for od in li]
>>> sorted(li2, key=lambda od: float(od['price']), reverse=True)
[OrderedDict([('room_id', '3179080'), ('price', '77.0')]), OrderedDict([('room_id', '1133718'), ('price', '74.0')]), OrderedDict([('room_id', '15303457'), ('price', '60.0')])]

如果您想设置打印格式:

>>> li3=sorted(li2, key=lambda od: float(od['price']), reverse=True)
>>> print("\n".join(["Room ID: {} Price: {}".format(od['room_id'], od['price']) for od in li3]))
Room ID: 3179080 Price: 77.0
Room ID: 1133718 Price: 74.0
Room ID: 15303457 Price: 60.0

关于python - 从有序字典中过滤掉项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51105061/

相关文章:

python - 使用 pandas 读取文件并创建 header

自定义鸭子类型(duck typing)的 Python 类型注释

dictionary - 字典 <'K, ' V> 的类型扩展错误

python - 我不断收到语法错误,不知何故,由于函数定义末尾的冒号

Python:深度复制(列表)与 new_list = old_list[:]

python - 使用包含消息的信息以安全的方式直接从信使 API 启动 python 脚本

python - 什么时候应该直接调用 __method__ ?

python - 使用 Openpyxl 在 Python 中创建嵌套字典

c++ - 来自其他类 C++ 的函数指针

python - 用数组索引 Numpy 数组