在列表中创建新词典

时间:2015-04-28 12:49:55

标签: python list dictionary

我从my_list创建了一个新词典。检查每个项目并将其添加到字典中作为新项目 密钥和任何项目对于密钥相同,然后在其值

中添加为密钥

问题是在创建新密钥时,其项目不会附加到该密钥的值。

我的代码:

my_list = ['a', 'b', 'c', 'a', 'a', 'b']
my_dict = {}
for item in my_list:
    if item in my_dict:
        my_dict[item] = [item]
    my_dict[item] = []
print my_dict

输出如下:

{'a': [], 'c': [], 'b': []}

但我希望它看起来像那样:

{'a': ['a', 'a'], 'c': [], 'b': ['b']}

7 个答案:

答案 0 :(得分:4)

您在for循环结束时重置了每个list的{​​{1}}。相反,试试这个:

item

答案 1 :(得分:1)

您也可以使用Counter

from collections import Counter
>>>{i:[i]*(j-1) for i,j in Counter(my_list).items()}
{'a': ['a', 'a'], 'c': [], 'b': ['b']}

答案 2 :(得分:1)

这将提供所需的输出:

my_dict = dict(map(lambda x: (x, list((my_list.count(x)-1)*x)), my_list))

答案 3 :(得分:0)

for item in my_list:
    if item in my_dict.keys():
        my_dict[item].append(item)
    else:
        my_dict[item]=[]

或更简单:

for item in set(my_list):
    my_dict[item]=[x]*(my_list.count(item)-1)

答案 4 :(得分:0)

您总是用空列表替换字典中的值。 您应该:如果密钥已存在,则添加项目或为新项目创建新列表

my_list = ['a', 'b', 'c', 'a', 'a', 'b']
my_dict = {}
for item in my_list:
    if item in my_dict:
        my_dict[item] += [item]
    else:
        my_dict[item] = [item]
print my_dict

答案 5 :(得分:0)

这应该有效。 您可以先写my_dict[item] = []然后添加一个列表到dict,然后添加一个

my_list = ['a', 'b', 'c', 'a', 'a', 'b']
my_dict = {}
for item in my_list:
    if item not in my_dict:
        my_dict[item] = []
    else:
        my_dict[item].append(item)
print my_dict

答案 6 :(得分:0)

my_list = ['a', 'b', 'c', 'a', 'a', 'b']
my_dict = {}
for item in my_list:
    if item in my_dict:
        my_dict[item] += [item]
    else:
        my_dict[item] = []
print my_dict

输出:

{'a': ['a', 'a'], 'c': [], 'b': ['b']}