在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"])
效果很好。
我做错了什么?或者我需要做什么?谢谢!
答案 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']