我正在尝试将字典转换为元组列表。我看到这里有很多类似的帖子,但是我没有看到任何与我想要的格式相同的帖子。例如,可能给我以下内容作为字典:
{"A": ["B", "C", "D"], "B":["D"], "C":[], "D":["A"]}
我希望输出看起来像一个列表,其中包含诸如...
[('A', 'B'), ('A", 'C'), ('A', 'D'), ('B', 'D'), ('D', 'A')]
其中键设置有对应的值作为自己的元组。
因此,对于以下内容,我正在编写函数find_par,该函数将字典和2个字符串(例如“ A”和“ D”)放入字典中。最终,我要执行的功能是尝试找到vert参数的父节点。我想知道是否可以获得列表,可以连续检查第二个元素来遍历该列表,一旦它与vert匹配,我就可以返回第一个元素,因为那将是父元素。否则我什么也不会返回。
def find_par(tree, root, vert):
if root == vert:
return []
else:
for key, value in tree.items():
temp = [key,value]
print (temp)
此代码通过提供的字典{"A": ["B", "C"], "B":["D"], "C":[], "D":[]}
产生以下输出:
['A', ['B', 'C']]
['B', ['D']]
['C', []]
['D', []]
同样,它应该看起来像[('A', 'B'), ('A', 'C'), ('B', 'D'),...]
答案 0 :(得分:2)
您可以使用列表推导来迭代每个dict值(假定您的dict存储为变量d
)下子列表中的项目:
[(k, i) for k, l in d.items() for i in l]
这将返回:
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'D'), ('D', 'A')]
答案 1 :(得分:0)
检查。
dict1 = {"A": ["B", "C"], "B":["D"], "C":[], "D":[]}
for key, values in dict1.items():
for i in values:
print([key,i])
#prints ['A', 'B'],['A', 'C'],['B', 'D']
答案 2 :(得分:0)
我已将您的字典存储为变量z。
[(a, b) for a in z for b in z[a]]
下面我将解释列表理解的嵌套如何工作:
您正在使用字典中的每个键
for a in z
,并使用for b in z[a]
将其与与z [a]关联的列表中的每个值匹配。您可以在语句的开头看到我创建了一个元组。