gpt4 book ai didi

python - itertools.izip() 用于未预定义的列表计数

转载 作者:行者123 更新时间:2023-11-30 23:38:27 25 4
gpt4 key购买 nike

我有以下数据结构:{'one':['a','b','c'],'two':['q','w','e'], '三':['t','u','y'],...}。因此,字典有不同的键数。由字典的键选择的每个数组都有相似的长度。如何将此结构转换为以下形式: [{'one':'a','two':'q','third':'t'},{'one':'b','two ':'w','三':'y'},...]

我认为我应该使用 itertools.izip(),但是如何在未预定义参数数量的情况下应用它?也许是这样的:itertools.izip([data[l] for l in data.keys()])?

TIA!

最佳答案

不太优雅,但确实有效:

In [9]: [{k:v[i] for (k,v) in d.items()} for i in range(len(d.values()[0]))]
Out[9]:
[{'one': 'a', 'three': 't', 'two': 'q'},
{'one': 'b', 'three': 'u', 'two': 'w'},
{'one': 'c', 'three': 'y', 'two': 'e'}]

我不禁想到必须有一种更好的方式来表达 i 循环,但现在什么也没想到。

或者:

In [50]: map(dict, zip(*[[(k, v) for v in l] for k, l in d.items()]))
Out[50]:
[{'one': 'a', 'three': 't', 'two': 'q'},
{'one': 'b', 'three': 'u', 'two': 'w'},
{'one': 'c', 'three': 'y', 'two': 'e'}]

不确定这是否在可读性方面有很大的改进。

关于python - itertools.izip() 用于未预定义的列表计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14507102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com