如何使用重复键从列表中编写字典
How to write Dictionary from list with Duplicate Keys
想将列表转换成字典,但是我这里有重复的键,不应该在output_dict中考虑。
以下是输入列表和预期的字典。
input_list = [[1,'a'],[1,'b'],[2,'c'],[2,'d']]
output_dict = {
1:['a','b'],
2:['c','d']
}
编写了以下程序,它给出了预期的结果,但不知何故感觉这不是 python 中做事的标准方式。还有其他写法吗?
from pprint import pprint
output_dict = {}
list2 = []
input_list = [[1,'a'],[1,'b'],[2,'c'],[2,'d']]
keys = []
for i in input_list:
keys.append(i[0])
for key in keys:
list2 = []
for i in input_list:
if key in i:
list2.append(i[1])
output_dict[key] = list2
print("\n\n")
pprint(output_dict)
您可以使用 collections.defaultdict
或使用 dict.setdefault
来获得更短的代码:
input_list = [[1, "a"], [1, "b"], [2, "c"], [2, "d"]]
out = {}
for k, v in input_list:
out.setdefault(k, []).append(v)
print(out)
打印:
{1: ['a', 'b'], 2: ['c', 'd']}
我建议使用 set() 从列表中删除重复项,然后将其附加到字典中!
input_list = list(set(input_list))
想将列表转换成字典,但是我这里有重复的键,不应该在output_dict中考虑。
以下是输入列表和预期的字典。
input_list = [[1,'a'],[1,'b'],[2,'c'],[2,'d']]
output_dict = {
1:['a','b'],
2:['c','d']
}
编写了以下程序,它给出了预期的结果,但不知何故感觉这不是 python 中做事的标准方式。还有其他写法吗?
from pprint import pprint
output_dict = {}
list2 = []
input_list = [[1,'a'],[1,'b'],[2,'c'],[2,'d']]
keys = []
for i in input_list:
keys.append(i[0])
for key in keys:
list2 = []
for i in input_list:
if key in i:
list2.append(i[1])
output_dict[key] = list2
print("\n\n")
pprint(output_dict)
您可以使用 collections.defaultdict
或使用 dict.setdefault
来获得更短的代码:
input_list = [[1, "a"], [1, "b"], [2, "c"], [2, "d"]]
out = {}
for k, v in input_list:
out.setdefault(k, []).append(v)
print(out)
打印:
{1: ['a', 'b'], 2: ['c', 'd']}
我建议使用 set() 从列表中删除重复项,然后将其附加到字典中!
input_list = list(set(input_list))