gpt4 book ai didi

python - 使用 python 从 mysql 行 fetchall 创建具有多个值的嵌套字典

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

考虑我正在从 row[0],row[1],row[2] 包含以下输出的行中出来,并且其顺序如下:

'Testcase2', 37L, 'hydra.c
'Testcase2', 100L,'vendor.c
'Testcase7', 34L, 'template.c
'Testcase3', 88L, 'hydra.c
'Testcase3', 80L, 'vendor.c
'Testcase6', 81L, 'template.c
'Testcase1', 1L, 'hydra.c
'Testcase4', 89L, 'vendor.c
'Testcase8', 41L, 'template.c
'Testcase5', 83L, 'vendor.c
'Testcase4', 98L, 'template.c

我需要打印一个唯一的测试用例名称以及最大行[1]值,因此我考虑创建具有多个值的字典。

{'Testcase1': {'hydra.c': 1},
'Testcase2':{'hydra.c':37,'vendor.c':100 },
'Testcase3':{'hydra.c':1,'vendor.c':80}
'Testcase4':{'vendor.c':89,'template.c':98},
'Testcase5':{'vendor.c':83}
'Testcase6':{'template.c':34}....}

要创建具有上述多个值的字典,请帮助我,以便稍后我将对嵌套字典进行排序,以便稍后我将打印具有最高行[1]值的测试用例名称:

from pprint import pprint as pp
d={}
for x,y,z in row:
d.setdefault(x,{z:[]})
d[x][z].append(y)

pp(d)

我尝试了上面的代码,但它仅使用新文件名进行更新,它没有按照上述要求进行附加。

最佳答案

追加是一个列表操作。根据您的示例数据,您似乎预计给定的 x 有不同的 z:

    for x, y, z in row:
if x not in d:
d[x] = {}
d[x][z] = y

但是 ifcollections 中解决的常见模式。 :

from collections import defaultdict

d = defaultdict(dict)
for x, y, z in row:
d[x][z] = y

关于python - 使用 python 从 mysql 行 fetchall 创建具有多个值的嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47405305/

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