遍历字典列表

3

我的任务是创建三个字典,用于存储我认识的三个人的信息,例如他们的名字、姓氏、年龄以及他们居住的城市:

Sissel = {'first_name': 'Sissel', 'last_name': 'Johnsen', 'age': '23', 'city': 'Copenhagen'}
David = {'first_name': 'David', 'last_name': 'Hansen', 'age': '35', 'city': 'Randers'}
Olivia = {'first_name': 'Olivia', 'last_name': 'Petersen', 'age': '57', 'city': 'New York'}

然后我需要将它们存储在一个列表中:

people = [Sissel, David, Olivia]

我需要循环遍历我的人员列表,并且在循环过程中,需要打印每个人的相关信息,通过打印字典中的键和对应值来实现。
我尝试使用了for循环:
for k, v in people:
    print(k, v)

但我刚刚收到一个错误消息,内容是:

ValueError: too many values to unpack (expected 2)

人们是一个列表。因此您在for循环中只需要一个项目,一旦获得该值,即为您的字典。 - Joe Ferndz
为什么不将你的字典解包成一个字典? - Sergey Bushmanov
@SergeyBushmanov 这是任务的一部分,需要创建3个独立的字典。 - em4995
3个回答

2

People是一个字典列表,这就是为什么它会抛出“too many values to unpack”的错误。在Python 3中,您需要调用dict.items()

for person in people:
    for k, v in person.items():
        print(k, v)
    print() # extra space between people

1
你已经接近成功了。以下是你需要做的:
你需要遍历这个列表。当你遍历这个列表时,你会逐个获取元素。在你的情况下,每个元素都是一个字典。所以你需要使用键来获取值。
for p in people:
    print (p['first_name: '])
    print (p['last_name: '])
    print (p['age: '])
    print (p['city: '])

除了逐个选择每个元素外,您还可以像这样在字典上进行for循环:

for p in people:
    for k,v in p.items():
        print (k,v)

0
for k, v in people:
    print(k, v)

people 是一个列表。你不能使用 k, v 来解包,因为在 for 循环中每次只有一个项目。

我会将所有人添加到一个带有列表的字典中,并以这种方式打印:

people = {'first_name': ['Sissel', 'David', 'Olivia'], 'last_name': ['Johnsen', 'Hansen', 'Petersen'],
              'age': ['23', '35', '57'], 'city': ['Copenhagen', 'Randers', 'New York']}
    
i = 0
while i < 3:
    for k, v in people.items():
        print(f'{k}:{v[i]}', end=', ')
    print('\n')
    i += 1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接