繁体   English   中英

转换列表中字典的值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM