我从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']}
答案 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']}