我有一个字典列表,看起来像这样:
list =[{"id": 1, "status": "new", "date_created": "09/13/2013"}, {"id": 2, "status": "pending", "date_created": "09/11/2013"}, {"id": 3, "status": "closed", "date_created": "09/10/2013"}]
我想要做的是能够打印这个与“id”相关的词典列表中的所有值。如果它只是一个词典,我知道我可以这样做:
print list["id"]
如果它只是一个字典,但我如何为字典列表执行此操作?我试过了:
for i in list:
print i['id']
但我收到一条错误
TypeError: string indices must be integers, not str
有人可以帮我一把吗?谢谢!
答案 0 :(得分:9)
在代码的某处,您的变量被重新分配了一个字符串值,而不是字典列表。
>>> "foo"['id']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: string indices must be integers, not str
否则,您的代码将起作用。
>>> list=[{'id': 3}, {'id': 5}]
>>> for i in list:
... print i['id']
...
3
5
但是关于不使用list
作为名称的建议仍然存在。
答案 1 :(得分:3)
我在Python shell中尝试了以下内容并且它可以工作:
In [1]: mylist =[{"id": 1, "status": "new", "date_created": "09/13/2013"}, {"id": 2, "status": "pending", "date_created": "09/11/2013"}, {"id": 3, "status": "closed", "date_created": "09/10/2013"}]
In [2]: for item in mylist:
...: print item
...:
{'status': 'new', 'date_created': '09/13/2013', 'id': 1}
{'status': 'pending', 'date_created': '09/11/2013', 'id': 2}
{'status': 'closed', 'date_created': '09/10/2013', 'id': 3}
In [3]: for item in mylist:
print item['id']
...:
1
2
3
切勿使用引用内置类型的保留字或名称(如list
的情况)作为变量的名称。
答案 2 :(得分:1)
我建议使用Python的列表理解:
print [li["id"] for li in list]