将包含多个值的 Python 字典转换为包含每个键值对的列表



我有一个字典,每个键的值数量在变化,例如

my_dict = {'a':['e','f'],'b':['g'],'c':[]}

我想提取列表中的每个键值对,即

[('a','e'),('a','f'),('b','g')]

因此,"c"不应该是列表的一部分,因为它没有关联的值。

这可以通过列表理解来实现:

my_dict = {'a':['e','f'],'b':['g'],'c':[]}
res = [(k, w) for k, v in my_dict.items() for w in v]
# [('a', 'e'), ('a', 'f'), ('b', 'g')]

出于学术目的,这里有一个略有不同的算法:

from itertools import zip_longest
my_dict = {'a':['e','f'],'b':['g'],'c':[]}
res = [(i, j) for k, v in my_dict.items()
       for i, j in zip_longest(k, v, fillvalue=k) if v]
# [('a', 'e'), ('a', 'f'), ('b', 'g')]
# your original data
my_dict = {'a':['e','f'],'b':['g'],'c':[]}
# your list of tuples.
new_list = []
for k, v in my_dict.iteritems(): # .items() in python 3x
    for item in v:
        # For each element in the list, append a tuple (key, current list item) to your output.
        new_list.append((k, item))

输出:

# [('a', 'e'), ('a', 'f'), ('b', 'g')]

最新更新