我有一个airbnb[0]
在其中的词典列表
{
'room_id': '1133718',
'survey_id': '1280',
'host_id': '6219420',
'room_type': 'Shared room',
'country': '',
'city': 'Singapore',
'borough': '',
'neighborhood': 'MK03',
'reviews': 9.0,
'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'
}
如果我想为字典列表中的每个字典获取一个仅包含room_id
值和price
的列表,以便可以在我的目录中编译这些列表,该怎么办new_list?
答案 0 :(得分:1)
不确定这是否是您想要的,但是您可以制作一个字典,其中的键是room_id,值是每个属性的价格,如下所示:
room_prices = { room['room_id'] : room['price'] for room in airbnb }
然后您像这样访问给定房间的价格:
room_id = '1133718'
room_price = room_prices[room_id]
答案 1 :(得分:0)
将字典中的一个元素提取到新列表中很容易:
room_ids = [item.get('room_id') for item in airbnb]
对所有有趣的对象执行此操作,并在不需要单独的列表时生成新的字典列表。或者您可以一次完成所有操作
newlist = [{'room_id': item.get('room_id'), 'price': item.get('price')} for item in airbnb]
编辑:或更详细但更笼统:
mylist = [{'a': 1, 'b':2, 'c':1}, {'a': 2, 'b': 2, 'c':1}, {'a': 5, 'b': 2, 'c':1}, {'b': 5}]
interesting_keys = ['a', 'b']
newlist = []
for item in mylist:
d = dict()
for i in interesting_keys:
d[i] = item.get(i)
newlist.append(d)
print(nl)
将输出:
[{'a': 1, 'b': 2}, {'a': 2, 'b': 2}, {'a': 5, 'b': 2}, {'a': None, 'b': 5}]
答案 2 :(得分:0)
如果您希望它们使用tuples
:
new_list = [(x['room_id'], x['price']) for x in airbnb]
# returns
[('1133718', 74.0)]
或dict
:
new_list = [{'room_id': x['room_id'], 'price': x['price']} for x in airbnb]
# returns
[{'room_id': '1133718', 'price': 74.0}]
答案 3 :(得分:0)
假设您的列表中包含多个词典,列表理解功能可以在词典列表中选择目标键。
room_info =[{
'room_id': '1133718',
'survey_id': '1280',
'host_id': '6219420',
'room_type': 'Shared room',
'country': '',
'city': 'Singapore',
'borough': '',
'neighborhood': 'MK03',
'reviews': 9.0,
'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'
},
{
'room_id': '1133718',
'survey_id': '1280',
'host_id': '6219420',
'room_type': 'Shared room',
'country': '',
'city': 'Singapore',
'borough': '',
'neighborhood': 'MK03',
'reviews': 9.0,
'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'
}]
[[i['room_id'],i['price']] for i in room_info]
>>[['1133718', 74.0], ['1133718', 74.0]]
结果将返回一个嵌套列表,其中每个单独的列表包含room_id
和price
详细信息。