在Python中迭代遍历列表的麻烦

时间:2013-06-28 18:40:43

标签: python json list loops enumerate

在python中,我有一个名为“list”的列表,如下所示:

[{'lastname': 'lname1', 'firstname': 'fname1', 'shortname': 'SN1'},
{'lastname': 'lname2', 'firstname': 'fname2', 'shortname': 'SN2'},
{'lastname': 'lname3', 'firstname': 'fname3', 'shortname': 'SN3'}]

我需要能够访问列表中的每个项目的每个属性。所以我必须得到每个用户的姓氏,每个用户的名字等等

由于这是一个列表,我一直在尝试按如下方式进行:

for idx in enumerate(list):
        print(list[idx])

但我得到一个错误,说列表索引必须是整数,而不是元组。

所以试试这个:

for idx in enumerate(list):
        print(idx)

我得到这样的输出:

(0, {'lastname': 'lname1', 'firstname': 'fname1', 'shortname': 'SN1'})
(1, {'lastname': 'lname2', 'firstname': 'fname2', 'shortname': 'SN2'})
(2, {'lastname': 'lname3', 'firstname': 'fname3', 'shortname': 'SN3'})

我想要的只是能够获取索引,所以我可以遍历每个列表项并说

firstname = list[idx]["firstname"]
lastname = list[idx]["lastname"]

等等。

注意:如果我说

之类的话
print(list[0]["firstname"]) 

效果很好。

我做错了什么?或者我需要做什么?谢谢!

4 个答案:

答案 0 :(得分:6)

for item in list:
    item['firstname']

虽然为列表使用名称list是个坏主意,因为这已经是Python标准库中列表的构造函数的名称。

enumerate在您需要列表中项目的索引时非常有用。它产生一个tuple,其中包含项目的索引和项目本身(正如您自己体验过的那样)。

答案 1 :(得分:1)

与JavaScript不同,在Python中迭代序列会产生元素,而不是索引。

print idx['lastname']

答案 2 :(得分:1)

列表indeces是整数。

>>> x = ['test','test2','test3']
>>> x[1]
'test2'

你拥有的是列表词典。所以你需要做的是遍历列表和字典。像这样:

>>> x = [{'cat':'lol'},{'tigers':'lions'}]
>>> for z in x:
...  for d in z:
...   print z[d]
...
lol
lions

所以如果你只想要这个名字:

for d in list:
 print d['firstname']

答案 3 :(得分:0)

你不需要enumerate,当你需要元素的索引时使用它,你不在这里..

您似乎想要做的是:

for di in mylist: # for .. in ... : Iterates over the contents of ...
   for elem in di:
      print elem,':', di[elem]

for di in mylist:
    print di['firstname'], di['lastname']