0

在 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

4 回答 4

6
for item in list:
    item['firstname']

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

enumerate如果您需要列表中项目的索引,这很有用。它产生一个tuple包含项目的索引和项目本身(正如您自己所经历的那样)。

于 2013-06-28T18:42:35.130 回答
1

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

print idx['lastname']
于 2013-06-28T18:43:57.167 回答
1

列表索引是整数。

>>> 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']
于 2013-06-28T18:45:48.677 回答
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']
于 2013-06-28T18:49:15.977 回答