Python 如何通过map或lambda函数提取带有键的dict值

Python 如何通过map或lambda函数提取带有键的dict值,python,lambda,Python,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)] 使用map或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)]
使用map或lambda函数

我的Python版本是Python2.7

您可以使用列表理解来获得所需的输出

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)]
[('key1', 'key11', 1),
 ('key1', 'key12', 2),
 ('key2', 'key21', 3),
 ('key2', 'key22', 4)]
如果您希望对输出进行排序,如您的问题所示

print sorted([(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)]
[('key1', 'key11', 1),
 ('key1', 'key12', 2),
 ('key2', 'key21', 3),
 ('key2', 'key22', 4)]

为什么必须是
lambda
map
?它们不适合你的需要。。这里可以开信用证。这就像说“请用锤子给我盖一座房子”。只是说说而已。我明白了。。LC也可以,我刚刚从@thefourtheye得到了下面的答案,稍后我将了解LC的细节,包括效率。谢谢大家:)非常感谢!效率如何?它等于:
对于k,v在d.iteritems()中:对于k1,v1在k:l.append((k,k1,d[k][k1]))
?@append by。