gpt4 book ai didi

python - 将 n 个等长列表转换为具有一个列表中唯一键的字典

转载 作者:太空宇宙 更新时间:2023-11-03 18:51:01 25 4
gpt4 key购买 nike

我有 n 个长度相等的列表,表示数据库行的值。数据非常复杂,因此我将在示例中呈现简化的值。

本质上,我想将这些列表(a、b、c)的值映射到一个字典,其中键是列表(id)的集合。

示例列表:

id = [1,1,1,2,2,2,3,3,3]
a = [1,2,3,4,5,6,7,8,9]
b = [10,11,12,13,14,15,16,17,18]
c = [20,21,22,23,24,25,26,27,28]

需要的字典输出:

{id:[[a],[b],[c]],...}

{'1':[[1,2,3],[10,11,12],[20,21,22]],'2':[[4,5,6],[13,14,15],[23,24,25]],'3':[[7,8,9],[16,17,18],[26,27,28]]}

字典现在有一个列表列表,其中包含原始 a、b、c 中的值,这些值由 id 列表中的唯一值作为子集,该 id 列表现在是字典键。

我希望这足够清楚。

最佳答案

试试这个:

id = ['1','1','1','2','2','2','3','3','3']
a = [1,2,3,4,5,6,7,8,9]
b = [10,11,12,13,14,15,16,17,18]
c = [20,21,22,23,24,25,26,27,28]

from collections import defaultdict
d = defaultdict(list)

# add as many lists as needed, here n == 3
lsts = [a, b, c]

for ki, kl in zip(id, zip(*lsts)):
d[ki] += [kl]

for k, v in d.items():
# if you don't mind using tuples, simply do this: d[k] = zip(*v)
d[k] = map(list, zip(*v))

结果与问题所预期的完全一致:

d == {'1':[[1,2,3],[10,11,12],[20,21,22]],
'2':[[4,5,6],[13,14,15],[23,24,25]],
'3':[[7,8,9],[16,17,18],[26,27,28]]}
=> True

关于python - 将 n 个等长列表转换为具有一个列表中唯一键的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18368853/

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