如何从字典列表中提取值?

时间:2020-03-30 19:50:01

标签: python python-3.x

我有字典:

dict = {
       "Bolig":[
          {
             "Internal_id":27698,
             "Title":"Thorshammer 95 7500 Holstebro",
             "Area":87.0,
             "Rent":6295.0,
             "Room":4
          }
       ],
       "Contact":[
          {
             "Name":"John Doe",
             "Email":"doe@gmail.com",
             "Phone":"33751010212"
          }
       ]
    }

我想提取其中一个键的值:例如,Internal_id键的值给我值27698。 我尝试通过以下方式将字典合并为单个dict

new_dict = {key: value for r in dict for key,value in r.iteritems()}

然后提取,但出现错误:

AttributeError: 'str' object has no attribute 'iteritems'

有没有办法实现这一目标?

3 个答案:

答案 0 :(得分:2)

for r in dict将遍历字典的"Bolig""Contact"。因此,r将是一个字符串,并且字符串没有iteritems方法(Python 3中的字典也没有-您应该使用items来代替)。

您应该遍历dict的缝合在一起的

import itertools

stitched_values = itertools.chain.from_iterable(dict.values())
result = {key: value for r in stitched_values for key, value in r.items()}

或者,如果保证字典的每个值都是一个一个元素的列表:

result = {key: value for r in dict.values() for key, value in r[0].items()}

答案 1 :(得分:1)

在字典理解中

{key: value for r in dict for key,value in r.iteritems()}

rdict的键,在您的情况下为字符串。您可以将其更改为

{key: value for r in dict.values() for key,value in r[0].items()}

答案 2 :(得分:1)

我们需要一个一个地针对每一层,第一层是一本字典,因此我们使用键来定位嵌套字典,在这种情况下为“ Bolig”或“ Contact”。然后,我们使用[]方括号访问列表并传递索引。最后,我们将属性定位到最里面的字典中。

现在,我们知道如何访问每个词典并列出您可以了解如何使用循环自动执行此操作了。

x = dict['Bolig'][0]['Internal_id']

print(x) # 27698