【发布时间】:2015-06-10 15:48:55
【问题描述】:
我想知道是否有一种基于字典的某些键的快速且 Pythonic 的方法来创建字典?
例如,如果我有这个给定的字典
{
"a": "abc",
"b": {"b1": "1", "b2": "2", "b3": "3"},
"c": 1,
"d": "timmy",
"e": "John"
}
我希望能够仅基于给定字典的几个键创建一个具有一对一映射的新字典。所以在这个例子中,我想创建一个仅基于键 "b2"、"c" 和 "d" 的字典。我也想给这些键一个不同的名字。期望的输出是:
{
"out_b2": "2",
"out_c": 1,
"out_d": "timmy"
}
我能想到的最简单的过程是创建嵌套的 for 循环来执行此任务。我想知道是否有更有效的方法来实现这一目标。
我知道他的问题可能会根据输入和输出的情况而令人困惑。让我们保持简单,说最深层次是输入的最大一个子字典,输出不会有任何子字典
【问题讨论】:
-
很不清楚。你能再举一些例子吗?会不会有更多的子目录?
-
@tobias_k 我想我能理解你为什么会感到困惑。我会尽快更新问题
-
好吧,你无法避免必须递归地展平所有嵌套的 subdicts,除非你有一些启发式方法知道 key
b2位于 subdictd['b'],或者除非所有需要的 key 恰好是在顶层找到。您还需要告诉我们更多缺失的信息吗?我们是否应该根据与顶级键的排序相似性来猜测接下来要递归到什么?这听起来比递归更麻烦。
标签: python dictionary nested flatten