如何将结构一致的字典列表转换为指定格式的列表嵌套结构?
解决方法
要得到每个字典的值组成的嵌套列表,直接遍历每个字典并提取其值即可:
基础解法(Python 3.7+)
Python 3.7及以上版本的字典会保留键的插入顺序,直接用列表推导式提取每个字典的values()并转为列表即可满足需求:
mylist = [{'a': 0, 'b': 2}, {'a': 1, 'b': 3}] result = [list(d.values()) for d in mylist] # 输出: [[0, 2], [1, 3]]
兼容低版本Python(3.6及以下)
如果使用的Python版本低于3.7,字典不保证键的顺序,这时可以指定固定的键列表来提取值,确保结果顺序一致:
mylist = [{'a': 0, 'b': 2}, {'a': 1, 'b': 3}] keys = ['a', 'b'] result = [[d[key] for key in keys] for d in mylist] # 输出: [[0, 2], [1, 3]]
原代码不符合预期的原因
你使用的zip(*[d.values() for d in mylist])是把所有字典中对应位置的值按键聚合,比如将两个字典的a值、b值分别分组,因此得到的是按键归类的结果,而非每个字典单独成子列表的结构。
内容的提问来源于stack exchange,提问作者JaredCusick
相关产品推荐
相关产品推荐

