如何创建一个列表,该列表将存储词典列表中的许多值

时间:2018-11-22 15:48:32

标签: python

我有一个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?

4 个答案:

答案 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_idprice详细信息。