gpt4 book ai didi

python - 将两个列表与键和值组合成一个字典并转换为数据框

转载 作者:太空宇宙 更新时间:2023-11-04 11:12:47 24 4
gpt4 key购买 nike

我有两个列表

keys = ['a', 'b', 'c', 'd']
values = ["1", "2", "3", "4", "5", "6", "7", "8"]

我的键列表中的值应该是最终字典中的键,而我的值列表中的值应该是它们的值。

输出应该是这样的:

result : [{
"a": "1",
"b": "2",
"c": "3",
"d": "4"
},
{
"a": "5",
"b": "6",
"c": "7",
"d": "8"
}]

稍后我想做一个 json_normalize 来得到一个表。

+---+---+---+---+
| a | b | c | d |
+---+---+---+---+
| 1 | 2 | 3 | 4 |
| 5 | 5 | 7 | 8 |
+---+---+---+---+

我需要一个值列表长度是动态的解决方案。所以它应该使用 8 个值,例如 64 个值。

我尝试将列表与 intertools.cycle 结合使用 zip()

values = ["1","2","3","4","5","6","7","8"]
keys = ["A","B","C"]

from itertools import cycle
zip_list = zip(cycle(keys), values)

result = set(zip_list)
result

这里是结果

{('A', '1'),
('A', '4'),
('A', '7'),
('B', '2'),
('B', '5'),
('B', '8'),
('C', '3'),
('C', '6')}

我不能使用这个解决方案,因为首先我不能执行 json_normalize() 以快速轻松地将它转换为数据帧,其次集合是有序的,我不想得到它命令。如何以另一种方式实现我的目标?

最佳答案

我建议你用一种更简单的方法来解决这个问题,根据 keys 的长度将列表 values 分成 block ,然后使用结果来构建数据框:

n = len(keys)
l = [values[i:i + n] for i in range(0, len(values), n)]
# [['1', '2', '3', '4'], ['5', '6', '7', '8']]
pd.DataFrame(l, columns=keys)

a b c d
0 1 2 3 4
1 5 6 7 8

只是为了好玩这是一个基于 itertools 的方法,遵循您方法中的想法(尽管出于显而易见的原因我强烈建议使用第一种方法):

from itertools import repeat, islice
keys = ['a', 'b', 'c', 'd']
values = ["1", "2", "3", "4", "5", "6", "7", "8"]
i_values = iter(values)
r = len(values)//len(keys)

d = [dict(zip(k, islice(i_values, len(k)))) for k in repeat(keys, r)]
# [{'a': '1', 'b': '2', 'c': '3', 'd': '4'}, {'a': '5',...

print(pd.DataFrame(d))
a b c d
0 1 2 3 4
1 5 6 7 8

关于python - 将两个列表与键和值组合成一个字典并转换为数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57805324/

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