2024-09-29 21:25:22 发布
网友
c = [{'text': 'LahoreRightNow', 'indices': [111, 126]}, {'text': 'PakvsSL', 'indices': [127, 135]}]
我要查两本字典的内容。我可以用c[0]['text']和c[1]['text']得到它们。你知道吗
c[0]['text']
c[1]['text']
难道没有一种方法可以用一个命令来实现吗?你知道吗
无法在一个操作中从字典列表访问所有text键。你知道吗
text
您可以创建一个函数,但此函数会分别对每个字典执行一个操作。你知道吗
您可以做的是在自己执行聚合之后创建一个新字典。最佳方法是通过collections.defaultdict:
collections.defaultdict
from collections import defaultdict d = defaultdict(list) for my_d in c: for k, v in my_d.items(): d[k].append(v) # defaultdict(<class 'list'>, {'text': ['LahoreRightNow', 'PakvsSL'], # 'indices': [[111, 126], [127, 135]]})
然后d['text']将返回您需要的列表。你知道吗
d['text']
@timgeb's list comprehension适用于单键情况。但是如果你有多个键,上面的方法会更有效。你知道吗
尝试以下简短方法:
print(list(map(lambda x:x['text'],c)))
输出:
['LahoreRightNow', 'PakvsSL']
如果列表满足单个命令约束,请使用
>>> [dic['text'] for dic in c] ['LahoreRightNow', 'PakvsSL']
它是
>>> result = [] >>> for dic in c: ... result.append(dic['text']) ... >>> result ['LahoreRightNow', 'PakvsSL']
它不会比这里的理解更简单,但是如果您喜欢函数式编程风格,可以隐藏for循环:
for
>>> from operator import itemgetter >>> map(itemgetter('text'), c) ['LahoreRightNow', 'PakvsSL']
(使用list(map(...))将map对象转换为Python3中的列表。)
list(map(...))
无法在一个操作中从字典列表访问所有
text
键。你知道吗您可以创建一个函数,但此函数会分别对每个字典执行一个操作。你知道吗
您可以做的是在自己执行聚合之后创建一个新字典。最佳方法是通过
collections.defaultdict
:然后
d['text']
将返回您需要的列表。你知道吗@timgeb's list comprehension适用于单键情况。但是如果你有多个键,上面的方法会更有效。你知道吗
尝试以下简短方法:
输出:
如果列表满足单个命令约束,请使用
它是
它不会比这里的理解更简单,但是如果您喜欢函数式编程风格,可以隐藏
for
循环:(使用
list(map(...))
将map对象转换为Python3中的列表。)相关问题 更多 >
编程相关推荐