我有一个字典,每个键的值数量在变化,例如
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')]