如何将计算得到的变量x、y追加到已有字典的对应值列表中
解决字典中追加计算值到对应赛事列表的问题
我需要把计算得到的两个变量x、y追加到已创建字典的对应赛事列表中,每个赛事单独计算x和y,但现在计算结果被加到了字典末尾,没进到对应赛事的列表里。
原创建字典的代码
my_dict= {} for row in mydb.fetchall(): if row[0] not in my_dict: # 创建字典 my_dict[row[0]] = list(row[1:]) my_dict[row[0]][4] = [my_dict[row[0]][4]] # 把整数转成整数列表 else: my_dict[row[0]][4].append(row[5])
原输出结果
{'Dallas-Minnesota': ['NHL', 8.1, 9, '15:00', [0, 1, 1, 5]], 'Vegas-New York': ['NHL', 8.1, 9, '18:00', [1, 2, 3, 4]], }
尝试添加x、y的代码
for key, value in my_dict.items(): # 两个变量 x= sum(value[4]) / len(value[4]) y = (x *100) / 2 # 添加值到字典 my_dict[row[0]].append([x], [y])
错误输出结果
{'Dallas-Minnesota': ['NHL', 8.1, 9, '15:00', [0, 1, 1, 5]], 'Vegas-New York': ['NHL', 8.1, 9, '18:00', [1, 2, 3, 4]], [1.75, 87.5], [2.5, 125.0] }
期望输出结果
{'Dallas-Minnesota': ['NHL', 8.1, 9, '15:00', [0, 1, 1, 5], [1.75], [87.5]], 'Vegas-New York': ['NHL', 8.1, 9, '18:00', [1, 2, 3, 4], [2.5], [125.0]], }
修正方案
问题出在遍历字典时误用了之前数据库循环的row[0]变量,现在需要操作当前遍历到的赛事对应的列表。直接用循环里的value(列表是可变对象,修改value会同步到字典)或者my_dict[key]来追加值即可:
for key, value in my_dict.items(): x = sum(value[4]) / len(value[4]) y = (x * 100) / 2 # 分别追加[x]和[y]到当前赛事的列表末尾 value.append([x]) value.append([y])
或者用my_dict[key]操作的写法:
for key, value in my_dict.items(): x = sum(value[4]) / len(value[4]) y = (x * 100) / 2 my_dict[key].append([x]) my_dict[key].append([y])
这样就能得到你期望的结构,把计算后的x、y以列表形式追加到对应赛事的信息列表中。
内容的提问来源于stack exchange,提问作者user20812299
相关产品推荐
相关产品推荐

