名單我有這樣一本字典:提取和合並來自字典
my_dict = { 'a': ['a','b','c'],
'x': ['x','y','z'] }
什麼是提取和合並的清單以取得最簡單的方法:['a','b','c','x','y','z']
?
編輯:結果可以任意順序,我們可以假設列表的元素是唯一的。
名單我有這樣一本字典:提取和合並來自字典
my_dict = { 'a': ['a','b','c'],
'x': ['x','y','z'] }
什麼是提取和合並的清單以取得最簡單的方法:['a','b','c','x','y','z']
?
編輯:結果可以任意順序,我們可以假設列表的元素是唯一的。
print [v for k in my_dict for v in my_dict[k]]
# ['a', 'b', 'c', 'x', 'y', 'z']
的鑰匙只要迭代,然後在價值觀,這樣,使用列表理解產生列表。
這是一個非常簡單的,但不是最優的,道:
my_dict = { 'a': ['a','b','c'],
'x': ['x','y','z'] }
l = []
for key in my_dict:
for element in my_dict[key]:
l.append(element)
print l
>>> ['a', 'b', 'c', 'x', 'y', 'z']
您可能想說如果元素不在l:l.append(元素)取決於最終輸出的結果 – sabbahillel
[v for val in my_dict.itervalues() for v in val]
my_dict = { 'a': ['a','b','c'],
'x': ['x','y','z'] }
你可以通過你的字典裏所有鍵遍歷和相應的值添加到最終名單。就像這樣:
my_list = []
for key in my_dict.keys():
my_list += my_dict[key]
簡明扼要:
更新:
該解決方案是優雅的,但蘊藏着二次的時間複雜度。如果您希望大量輸入數據,則發佈其他解決方案將是可取的。
真的,我的答案是關於簡單性,而不是性能 – pajton
OP現在已經明確指出順序並不重要,但建議人們使用二次方因爲簡單算法不是一個好策略,我不認爲。 – DSM
另一個點如果在多個關鍵字下找到一個元素值,那麼OP就會發生什麼。兩者都進入最終輸出或只有一個。示例'a'是密鑰'y'和'z'的元素 – sabbahillel
您尚未指定確定最終訂單的規則。它是「按照排序順序遍歷鍵併合並列表」,還是「將列表中的列表合併成一個列表然後對其進行排序」? – DSM
值的順序是重要的嗎? – thefourtheye
所有的kictionary值是否都有唯一的條目?以下解決方案不檢查重複條目,並且在最終列表生成後需要額外的步驟。例如,如果'a'是鍵'y'和'z'列表中的條目,那麼您希望看到什麼? – sabbahillel