2014-03-06 70 views
1

現在,我得到的字典提取與密鑰字典的值:如何通過地圖或lambda功能

d = {'key1': 
     {'key11':1, 
     'key12':2}, 
    'key2': 
     {'key21':3, 
     'key22':4} 
    } 

如何解壓到元組的列表:

l = [('key1','key11',1), 
    ('key1','key12',2), 
    ('key2','key21',3), 
    ('key2','key22',4)] 

使用地圖或lambda功能
我的Python版本是Python2.7

+2

_Why_它必須是'lambda'還是'map'?他們不適合你的需求..一個LC在這裏很好。這就像說「請用錘子給我建一座房子」。只是說。 – aIKid

+0

我明白了...... LC也可以,我剛剛從@thefourtheye得到了答案,稍後我會學習包括LC效率在內的細節。謝謝大家:) – PeacefulBY

回答

2

您可以使用列表解析,讓你想

輸出
print [(k, k1, d[k][k1]) for k in d for k1 in d[k]] 

輸出

[('key2', 'key22', 4), 
('key2', 'key21', 3), 
('key1', 'key12', 2), 
('key1', 'key11', 1)] 

如果你想輸出進行排序,因爲你的問題,

print sorted([(k, k1, d[k][k1]) for k in d for k1 in d[k]]) 

輸出

[('key1', 'key11', 1), 
('key1', 'key12', 2), 
('key2', 'key21', 3), 
('key2', 'key22', 4)] 
+0

非常感謝!效率如何?是否等於:'for k,v in d.iteritems():for k1,v1 in k:l.append((k,k1,d [k] [k1]))'? – PeacefulBY

+0

@PeacefulBY [列表理解速度會比'l.append']快(https://wiki.python.org/moin/PythonSpeed/PerformanceTips#Loops)。 – thefourtheye