[英]Transform list of dict (with 2 keys/values) in a single dict where values of first key is the key of the second value
[英]Transform values of a dict in a list?
您好,我有一本字典 python,如下所示:
a = {'b':1, 'c':2, 'd':3}
我想要这个:
a = {'b':[1], 'c':[2], 'd':[3]}
我该怎么做才能拥有这个?
非常感谢 !
您可以使用defaultdict :
from collections import defaultdict
d = defaultdict(list)
a = ['1', '2']
for i in a:
for j in range(int(i), int(i) + 2):
d[j].append(i)
用法:
>>> d
defaultdict(<type 'list'>, {1: ['1'], 2: ['1', '2'], 3: ['2']})
>>> d.items()
[(1, ['1']), (2, ['1', '2']), (3, ['2'])]
a = {'b':1, 'c':2, 'd':3}
a = {k:[v] for k, v in a.items()}
print(a)
印刷:
{'b': [1], 'c': [2], 'd': [3]}
你可以这样试试:
>>> a = dict([(i,[j]) for i,j in a.items()])
>>> a
{'b': [1], 'c': [2], 'd': [3]}
对于就地修改,您可以使用:
a = {'b': 1, 'c': 2, 'd': 3}
for k, v in a.items():
a[k] = [v]
print(a)
# {'b': [1], 'c': [2], 'd': [3]}
这应该比创建一个新字典快一点:
def listify(d):
for k, v in d.items():
d[k] = [v]
return d
def listify2(d):
return {k: [v] for k, v in d.items()}
a = {'b': 1, 'c': 2, 'd': 3}
print(listify(a))
# {'b': [1], 'c': [2], 'd': [3]}
a = {'b': 1, 'c': 2, 'd': 3}
print(listify2(a))
# {'b': [1], 'c': [2], 'd': [3]}
%timeit a = {'b': 1, 'c': 2, 'd': 3}; a = listify(a)
# 1000000 loops, best of 3: 522 ns per loop
%timeit a = {'b': 1, 'c': 2, 'd': 3}; a = listify2(a)
# 1000000 loops, best of 3: 660 ns per loop
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.