从字典列表中提取字符串

时间:2013-04-24 12:24:54

标签: python list dictionary

如何在此词典列表中仅打印“mid”或“status”?


list = [{'status': 'OK', 'mid': '6269'}, {'status': 'OK', 'mid': '6270'},{'status': 'OK', 'mid': '6271'}, {'status': 'OK', 'mid': '6272'}, {'status': 'OK', 'mid': '6273'}, {'status': 'OK', 'mid': '6274'},{'status': 'OK', 'mid': '6288'}, {'status': 'OK', 'mid': '6289'}]

我试过:print list[0]['mid']但它只给出了列表中第一项的'mid'值?我怎么能为整个list做到这一点?

2 个答案:

答案 0 :(得分:8)

使用列表理解:

data = [{'status': 'OK', 'mid': '6269'},
        {'status': 'OK', 'mid': '6270'},
        {'status': 'OK', 'mid': '6271'},
        {'status': 'OK', 'mid': '6272'},
        {'status': 'OK', 'mid': '6273'},
        {'status': 'OK', 'mid': '6274'},
        {'status': 'OK', 'mid': '6288'},
        {'status': 'OK', 'mid': '6289'}]

print [item['mid'] for item in data]

PS:不要为变量list命名,不能使用内置的list

答案 1 :(得分:1)

虽然上面的答案是正确的,但我会尝试解释为什么OP的原始代码不起作用。

  1. 首先是变量的名称。对原始问题的评论很好地解释了
  2. 你说为什么打印列表[0] ['mid']只给出第一个值。原因是你只给出list [0],这是一个包含两个键,status和mid的字典,你试图得到对应于“mid”键的值,这将是一个单独的值
  3. 如果您没有使用List Comprehensions,那么可以使用简单的for循环,其范围从0到列表的长度。或者用于列表类型的迭代中的项目。