下面的列表理解给出了所需的输出,但似乎有点长,因为我必须具体引用子字典中的每个值,因为每个主键的值都是另一个字典。有没有一种方法可以让我的列表理解变短,并且仍然提供相同的输出?如果可能的话,我在找一个单一的解决方案。在
myDict = {'pKey_b': {'val3': 'vb3', 'val1': 'vb1', 'val4': 'vb4', 'val2': 'vb2'}, 'pKey_a': {'val3': 'va3', 'val1': 'va1', 'val4': 'va4', 'val2': 'va2'}, 'pKey_e': {'val3': 've3', 'val1': 've1', 'val4': 've4', 'val2': 've2'}, 'pKey_d': {'val3': 'vd3', 'val1': 'vd1', 'val4': 'vd4', 'val2': 'vd2'}, 'pKey_c': {'val3': 'vc3', 'val1': 'vc1', 'val4': 'vc4', 'val2': 'vc2'}}
myListComp = sorted(sorted([k, v.values()[0], v.values()[1], v.values()[2], v.values()[3]]) for k, v in myDict.items())
print myListComp
'''
[
['pKey_a', 'va1', 'va2', 'va3', 'va4'],
['pKey_b', 'vb1', 'vb2', 'vb3', 'vb4'],
['pKey_c', 'vc1', 'vc2', 'vc3', 'vc4'],
['pKey_d', 'vd1', 'vd2', 'vd3', 'vd4'],
['pKey_e', 've1', 've2', 've3', 've4']
]
'''
来自
help(dict.values)
:知道
^{pr2}$dict.values()
返回list
(而不是tuple
),您可以将列表理解简化为:如果稍后您意识到您只需要
v.values()
上的前四个元素,请将其切成这样v.values()[:4]
。在在DSM建议的基础上,还有另一种方法可以做到:
怎么样:
尽管你可能也想要
^{pr2}$取决于您希望值以值的排序顺序显示,还是按相应的排序键的顺序显示。在这里他们都是一样的。在
请注意,在您的原始代码中,键不需要显示为第一个元素,因为排序可能会将它们与值混合在一起;我已经确保它们保持在第一位。在
相关问题 更多 >
编程相关推荐