在列表中打印给定字典键的所有值

时间:2013-09-13 21:06:51

标签: python dictionary

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

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

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

3 个答案:

答案 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]