如何用Python列表实现这个?(itemgetter?)

2 投票
6 回答
1054 浏览
提问于 2025-04-15 18:55
[{'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

撰写回答