使用 python 从 mysql 行 fetchall 创建具有多个值的嵌套字典
creating nested dictionary with multiple values from a mysql row fetchall using python
考虑一下我要从行[0]、行[1]、行[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
但是 if
是 collections 中提到的常见模式:
from collections import defaultdict
d = defaultdict(dict)
for x, y, z in row:
d[x][z] = y
考虑一下我要从行[0]、行[1]、行[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
但是 if
是 collections 中提到的常见模式:
from collections import defaultdict
d = defaultdict(dict)
for x, y, z in row:
d[x][z] = y