【问题标题】:Is it possible to iterate/loop over keys, values of dictionaries nested in list?是否可以迭代/循环键,嵌套在列表中的字典值?
【发布时间】:2020-06-14 11:08:29
【问题描述】:

所以我正在使用速成课程 2e。

我在前 6-7:“从你为练习 6-1(第 102 页)编写的程序开始。创建两个代表不同人的新字典,并将所有三个字典存储在一个名为

的列表中

人 .循环浏览您的人员列表。当您遍历列表时,打印您所知道的关于每个人的所有信息。”

我的代码格式如下(出于隐私原因,值已替换为“值”:


people = []

#add person to empty list

person = {
    'first_name' : 'value', 
    'last_name' : 'value', 
    'city' : 'value',
    }
people.append(person)

#add person to empty list

person = {
    'first_name' : 'value', 
    'last_name' : 'value', 
    'city' : 'value',
    }
people.append(person)

#add person to empty list

person = {
    'first_name' : 'value',
    'last_name' : 'value', 
    'city' : 'value',
    }
people.append(person)

#verify list has persons added

print(people)

现在对于 for 循环部分,是否可以访问与列表中每个字典关联的键和值?我试过但失败了。我以为我可以用字典做我所做的事情,例如:

for key, value in people.items():

然后在 print 调用中使用 f 字符串跟进。

我知道如果 'people' 是字典,它会起作用,但我假设发生以下错误,因为它是一个列表: "AttributeError: 'list' 对象没有属性 'items'"

所以,简而言之:

如果 .items() 前面是一个嵌套有字典的列表,是否不能循环使用它?在上述情况下,我将如何访问每个键值对?

有没有比我最终开始工作的更简单的方法:

for person in people:
    name = f"{person['first_name'].title()} {person['last_name'].title()}"
    residence = f"{person['city'].title()}"
    print(f"{name} lives in {residence}.")

提前谢谢各位!

【问题讨论】:

  • 只需在 for key, value in person.items(): 上嵌套一个循环在您的 for person in people: 循环内。 (记得进一步缩进内部循环中的语句。)

标签: python list loops dictionary


【解决方案1】:

.items() 成功了

for list_entry in people:
    for propertie_ikey, propertie_item in list_entry.items():
        print(propertie_ikey, propertie_item)

【讨论】:

    猜你喜欢
    • 2020-04-08
    • 2015-09-19
    • 2021-07-14
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    相关资源
    最近更新 更多