簡體   English   中英

Python將字典中的鍵具有多個值的字典轉換為元組列表

[英]Python convert dictionary where keys have multiple values into list of tuples

我正在嘗試將字典轉換為元組列表。 我看到這里有很多類似的帖子,但是我沒有看到任何與我想要的格式相同的帖子。 例如,可能給出以下命令:

{"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)

此代碼使用dict {"A": ["B", "C"], "B":["D"], "C":[], "D":[]}產生以下輸出:

['A', ['B', 'C']]
['B', ['D']]
['C', []]
['D', []]

同樣,它應該看起來像[('A', 'B'), ('A', 'C'), ('B', 'D'),...]

您可以使用列表推導來迭代每個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')]

檢查一下。

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']

我已將您的字典存儲為變量z。

[(a, b) for a in z for b in z[a]]

下面,我將解釋列表理解的嵌套如何工作:

您將字典中的每個鍵都用for a in z進行匹配,並使用z [a]中for b in z[a]與z [a]關聯的列表中的每個值進行匹配。 您可以在語句的開頭看到我創建了一個元組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM