Python 合并n';第四级多维字典
好的,那么我得到的是:Python 合并n';第四级多维字典,python,python-3.x,dictionary,list-comprehension,python-3.6,Python,Python 3.x,Dictionary,List Comprehension,Python 3.6,好的,那么我得到的是: foo = {1: {'f1': 'c1'}, 2: {'f2': 'c2'}} 使用列表理解(当然,如果可能的话)我想要得到的是合并所有二级字典值: bar = {'f1': 'c1', 'f2': 'c2'} 我尝试的是: bar = {k:v for k, v in tmp.items() for tmp in list(foo.values())} 现在我明白了: NameError: name 'tmp' is not defined 这就像是一个逻辑解
foo = {1: {'f1': 'c1'}, 2: {'f2': 'c2'}}
使用列表理解(当然,如果可能的话)我想要得到的是合并所有二级字典值:
bar = {'f1': 'c1', 'f2': 'c2'}
我尝试的是:
bar = {k:v for k, v in tmp.items() for tmp in list(foo.values())}
现在我明白了:
NameError: name 'tmp' is not defined
这就像是一个逻辑解决方案,但显然这是一个不可能的,请你建议一个解决方案使用列表理解,如果可能的话,或其他一些一行,或者如果这将是不可能的一个洞察我为什么会得到这个错误将是一个很好的知识
谢谢,您可以使用字典理解:
foo = {1: {'f1': 'c1'}, 2: {'f2': 'c2'}}
bar = {k: v for d in foo.values() for k, v in d.items()}
{'f1': 'c1', 'f2': 'c2'}
您很接近,但嵌套顺序不正确。这是一个棘手的问题,并非每个人都凭直觉。阅读您的理解,就像为循环编写一个正常的
也不需要从字典值中列出
相关:。非常感谢,这是有道理的,有点让人难以置信,但对我来说是可行的!:)有趣的是,我写了一个循环,看起来和你们在回答之前解开这个循环时完全一样,但若不是因为这个,我肯定不知道如何将它与理解联系起来!:)@jpp