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

2024-09-26 18:15:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典:

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'

我有没有办法做到这一点


Tags: keyinidfor字典titlevaluearea
3条回答

我们需要一个接一个地瞄准每一层,第一层是一个字典,所以我们使用键瞄准嵌套字典,在本例中是“Bolig”或“Contact”。然后我们使用[]方括号访问列表并传入索引。最后,我们将属性定位在最里面的字典中

现在,我们知道了如何访问每个字典和列表,您就可以了解如何使用循环自动执行这些操作

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

print(x) # 27698 

词典中的理解

{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()}

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()}

相关问题 更多 >

    热门问题