有时需要将元组列表转换为字典对象,以提高数据可读性。例如:
输入:[('A', 1), ('B', 2), ('C', 3)] 输出:{'A': [1], 'B': [2], 'C': [3]}
方法 1:使用 setdefault()
利用字典的 setdefault() 方法将第一个参数作为键,第二个参数作为值追加到列表中。如果键不存在,则创建新键并初始化空列表。
def convert(tup, di):
for a, b in tup:
di.setdefault(a, []).append(b)
return di
# 测试代码
tups = [("akash", 10), ("gaurav", 12), ("anand", 14), ("suraj", 20), ("akhil", 25), ("ashish", 30)]
dictionary = {}
print(convert(tups, dictionary))
输出:
{'akash': [10], 'gaurav': [12], 'anand': [14], 'ashish': [30], 'akhil': [25], 'suraj': [20]}
方法 2:使用 itertools.groupby
使用 itertools 模块中的 groupby 函数按元组的第一个元素(键)进行分组,提取后续元素作为值。
from itertools import groupby
def convert_to_dict(tuple_list):
groups = groupby(tuple_list, key=lambda x: x[0])
dictionary = {}
for key, group groups:
dictionary[key] = [item[] item group]
dictionary
tuple_list = [(, ), (, ), (, ), (, ), (, ), (, )]
(convert_to_dict(tuple_list))

