2014-02-27 43 views
0

名單我有這樣一本字典:提取和合並來自字典

my_dict = { 'a': ['a','b','c'], 
      'x': ['x','y','z'] } 

什麼是提取和合並的清單以取得最簡單的方法:['a','b','c','x','y','z']

編輯:結果可以任意順序,我們可以假設列表的元素是唯一的。

+0

您尚未指定確定最終訂單的規則。它是「按照排序順序遍歷鍵併合並列表」,還是「將列表中的列表合併成一個列表然後對其進行排序」? – DSM

+0

值的順序是重要的嗎? – thefourtheye

+0

所有的kictionary值是否都有唯一的條目?以下解決方案不檢查重複條目,並且在最終列表生成後需要額外的步驟。例如,如果'a'是鍵'y'和'z'列表中的條目,那麼您希望看到什麼? – sabbahillel

回答

2
print [v for k in my_dict for v in my_dict[k]] 
# ['a', 'b', 'c', 'x', 'y', 'z'] 

的鑰匙只要迭代,然後在價值觀,這樣,使用列表理解產生列表。

0

這是一個非常簡單的,但不是最優的,道:

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

您可能想說如果元素不在l:l.append(元素)取決於最終輸出的結果 – sabbahillel

3
[v for val in my_dict.itervalues() for v in val] 
0
my_dict = { 'a': ['a','b','c'], 
      'x': ['x','y','z'] } 

你可以通過你的字典裏所有鍵遍歷和相應的值添加到最終名單。就像這樣:

my_list = [] 
for key in my_dict.keys(): 
    my_list += my_dict[key] 
3

簡明扼要:

​​

更新:

該解決方案是優雅的,但蘊藏着二次的時間複雜度。如果您希望大量輸入數據,則發佈其他解決方案將是可取的。

+0

真的,我的答案是關於簡單性,而不是性能 – pajton

+2

OP現在已經明確指出順序並不重要,但建議人們使用二次方因爲簡單算法不是一個好策略,我不認爲。 – DSM

+0

另一個點如果在多個關鍵字下找到一個元素值,那麼OP就會發生什麼。兩者都進入最終輸出或只有一個。示例'a'是密鑰'y'和'z'的元素 – sabbahillel