遍历字典列表

时间:2020-10-03 11:34:01

标签: python

我的任务是制作3个字典来存储有关我认识的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)

3 个答案:

答案 0 :(得分:2)

People是一个词典列表,这就是为什么它抛出太多值以致无法解包错误的原因。在Python 3中,您需要调用dict.items()

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

答案 1 :(得分: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)

答案 2 :(得分: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