📜  Python|将元组列表转换为字典值列表

📅  最后修改于: 2022-05-13 01:54:29.099000             🧑  作者: Mango

Python|将元组列表转换为字典值列表

Python中数据类型相互转换的问题之一是将元组列表转换为字典,其中键是元组的第一个元素,它们被唯一标识为字典中的键,其对应的值作为各个键的对应值的列表作为元组的第二个元素。让我们讨论如何解决这个特定问题。

方法 #1:使用 defaultdict() + 循环
使用 defaultdict() 和循环可以轻松解决此问题。 defaultdict 提供了一个默认值字典容器来为键分配对应的值列表,这样我们就不需要用空列表来初始化键,并且使用循环从元组中提取相似的值。

# Python3 code to demonstrate working of
# Convert list of tuples to dictionary value lists
# Using defaultdict() + loop
from collections import defaultdict
  
# initializing list
test_list = [(1, 'gfg'), (1, 'is'), (2, 'best'), (3, 'for'), (4, 'CS')]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Using defaultdict() + loop
# Convert list of tuples to dictionary value lists
res = defaultdict(list)
for i, j in test_list:
    res[i].append(j)
  
# printing result 
print("The merged dictionary is : " + str(dict(res)))
输出 :

方法 #2:使用defaultdict() + groupby()
该方法执行与上述方法类似的任务,只是不使用循环访问每个键值对,这里我们使用 Python 的groupby库将键与值分组,然后转换为列表。

# Python3 code to demonstrate working of
# Convert list of tuples to dictionary value lists
# Using defaultdict() + groupby()
from collections import defaultdict
from operator import itemgetter
from itertools import groupby
  
# initializing list
test_list = [(1, 'gfg'), (1, 'is'), (2, 'best'), (3, 'for'), (4, 'CS')]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Using defaultdict() + groupby()
# Convert list of tuples to dictionary value lists
res = dict((k, [v[1] for v in itr]) for k, itr in groupby(
                                test_list, itemgetter(0)))
  
# printing result 
print("The merged dictionary is : " + str(dict(res)))
输出 :