7

我有一个看起来像这样的字典列表:

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”相关的所有值如果它只是 1 字典我知道我可以这样做:

print list["id"]

如果它只是一本字典,但我如何为字典列表执行此操作?我试过了:

for i in list:
    print i['id']

但我收到一条错误消息

TypeError: string indices must be integers, not str

有人可以帮帮我吗?谢谢!

4

3 回答 3

14

在您的代码中的某处,您的变量被重新分配了一个字符串值,而不是一个字典列表。

>>> "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作名称的建议仍然有效。

于 2013-09-13T21:48:51.947 回答
4

我在 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)作为变量的名称。

于 2013-09-13T21:09:41.033 回答
2

我推荐 Python 的列表推导:

print [li["id"] for li in list]
于 2019-06-03T06:12:58.743 回答