Python将字典中的键具有多个值的字典转换为元组列表

时间:2019-04-15 18:26:03

标签: python python-3.x

我正在尝试将字典转换为元组列表。我看到这里有很多类似的帖子,但是我没有看到任何与我想要的格式相同的帖子。例如,可能给我以下内容作为字典:

{"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'),...]

3 个答案:

答案 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]关联的列表中的每个值匹配。您可以在语句的开头看到我创建了一个元组。