在Python中循环遍历人员时感到困惑

时间:2016-09-01 23:47:29

标签: python

我的练习有问题,要求我循环浏览我的人员列表,并在为每个人使用字典时打印我所知道的关于每个人的所有内容。我试图通过让Python接受并遍历我的词典来开始,但每当我尝试运行我的代码时,我都会收到一条错误消息:"值错误:解压缩的值太多了。 (预期2)"

dictionaries_v = {

    'first_name': 'victor',
    'last_name': 'croc',
    'age': 21,
    'city': 'new york',
    }

dictionaries_c = {

    'first_name': 'charmy',
    'last_name': 'bee',
    'age': 8,
    'city': 'new york',
    }

dictionaries_e = {

    'first_name': 'espio',
    'last_name': 'armadilo',
    'age': 15,
    'city': 'new york',
    }

people = ['dictionaries_v', 'dictionaries_c', 'dictionaries_e']

for key, value in people:

    print( "\n" + key + ": " + value)

感谢您的时间。

3 个答案:

答案 0 :(得分:3)

您的第一个问题是您的列表中包含三个字符串。注意你是如何包装它的引号的。因此,当您遍历列表时,您绝对不会得到您期望的字典。

其次,peoplelist。因此,当您迭代列表时,迭代器将在每次迭代时保存字典。

了解这一点,您只需要像其他任何列表一样迭代您的列表:

people = [dictionaries_v, dictionaries_c, dictionaries_e]
for d in people:
    print(d)

您的输出将如下所示:

{'last_name': 'croc', 'age': 21, 'first_name': 'victor', 'city': 'new york'}
{'last_name': 'bee', 'age': 8, 'first_name': 'charmy', 'city': 'new york'}
{'last_name': 'armadilo', 'age': 15, 'first_name': 'espio', 'city': 'new york'}

要从字典中获取特定信息,只需在每次迭代中使用该键即可。简单的例子:

for d in people:
    print(d['last_name'])

答案 1 :(得分:0)

people是一个列表。您只能从列表中一次获取一个值。但是,它的元素是字典。因此,以下循环可行:

for element in people:
    for key, value in element:
        print( "\n" + key + ": " + value)

外部循环遍历people中的每个字典,并将element设置为该字典。内部循环遍历该字典并将key设置为键,将value设置为值。

另外,您将people设置为['dictionaries_v', 'dictionaries_c', 'dictionaries_e']。不是将每个元素设置为字符串,而是将其设置为变量本身:[dictionaries_v, dictionaries_c, dictionaries_e]

答案 2 :(得分:0)

您要在列表中添加字符串。请使用变量名称。

people = [dictionaries_v, dictionaries_c, dictionaries_e]

编辑: 添加更多代码来解决下面解压缩的问题。

for person in people:
    for key,value in person:
        print key, " : ", value