[英]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.