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

标签 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)]

使用映射或 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)]

如果您希望对输出进行排序,如您的问题所示,

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)]

关于python - 如何通过map或lambda函数提取带有键的dict的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22214508/

相关文章:

python - 更改 3D 图形颜色 (matplotlib)

Python matplotlib : memory not being released when specifying figure size

python - 创建一种从文件中读取正数和负数的方法

python - 如何使用静态方法初始化静态变量?

python - 迭代 pandas 时间戳时获取 for 循环的索引

Java 8 嵌套流 : return a value in last stream

c# - C# 中 Action 委托(delegate)的使用

c# - 声明之间的事件处理差异?

c# - 元素不存在时返回空字符串

java - 如何在lambda表达式(JAVA)中使用try catch?