我在与此主题相关的许多现有问题中找不到答案后发布此问题 我有一本类似于这一本的词典:
foo = {'a': [(1, 0.5), (2, 0.3)], 'b': [(3, 0.4), (4, 0.1)]}
并且想要访问嵌套tupels的项目,以便从中创建以下字典:
foo = {'a': [1, 2], 'b': [3, 4]}
我该怎样做,最好以pythonic方式?
答案 0 :(得分:1)
我认为这两种解决方案最容易阅读:
>>> from operator import itemgetter
>>> {k:map(itemgetter(0), foo[k]) for k in foo}
{'a': [1, 2], 'b': [3, 4]}
或无进口:
>>> {k:[x[0] for x in foo[k]] for k in foo}
{'a': [1, 2], 'b': [3, 4]}
答案 1 :(得分:0)
怎么样?
{x: map(lambda z: z[0], y) for x, y in foo.iteritems()}
答案 2 :(得分:0)
使用dict comprehension
:
In [214]: {key:list(map(lambda x: x[0], foo[key])) for key in foo}
Out[214]: {'a': [1, 2], 'b': [3, 4]}
答案 3 :(得分:0)
{k:list(zip(x,y)[0]) for k,(x,y) in foo.iteritems()}
这给出了:
{'a': [1, 2], 'b': [3, 4]}
答案 4 :(得分:0)
您可以使用collections
模块中的defaultdict
执行此操作:
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d = defaultdict(list)
>>> for k in foo:
for v in foo[k]:
d[k].append(v[0])
>>> d
defaultdict(<class 'list'>, {'a': [1, 2], 'b': [3, 4]})
>>> d['a']
[1, 2]