如何用Python列表实现这个?(itemgetter?)
[{'id':44}, {'name':'alexa'},{'color':'blue'}]
我想从列表中选择出“id”的内容。简单来说,我想打印出44,因为在这个列表里,44就是“id”。
6 个回答
4
其他的回答都能解决你的问题,我只是想提供一个不同的做法。
与其用一个包含多个字典的列表,在查询某个键的时候还得遍历所有列表里的项目,不如直接用一个字典,里面的值是列表。这样,每个键都对应一个值的列表(如果你的字典里的键都是不同的,也可以只对应一个值)。
所以,
data=[{'id':44}, {'name':'alexa'},{'color':'blue'}]
可以变成
data={'id':[44], 'name':['alexa'], 'color':['blue']}
这样你就可以很方便地通过 data['id']
来访问 'id'
的值(如果你只需要一个值,可以用 data['id'][0]
)。
如果你的字典里的键都是独一无二的(就像你例子里那样),其实你甚至不需要值的列表。
data={'id':44, 'name':'alexa', 'color':'blue'}
这样做不仅让你的代码更简洁,还能加快查询速度,因为不再需要遍历一个列表了。
5
这是一种奇怪的数据结构……就是一个包含单个字典的列表。
key = 'id'
l = [{'id':44}, {'name':'alexa'},{'color':'blue'}]
print [ x[key] for x in l if key in x ][0]
假设你可以确保每个键只出现一次……
也许你应该先把这个列表转换成一个字典:
key = 'id'
l = [{'id':44}, {'name':'alexa'},{'color':'blue'}]
d = {}
for x in l:
d.update(x)
print d[key]
3
可能这是最好的解决方案:
>>> L = [{'id':44}, {'name':'alexa'},{'color':'blue'}]
>>> newd = {}
>>> for d in L:
... newd.update(d)
>>> newd['id']
44