我对Python非常陌生,正在尝试编写一个脚本,该脚本通过现有字典循环并重新组织数据,以便它位于嵌套字典中。现有字典是根据我在线上找到的一些代码创建的,该代码将一行SQL查询转换为字典。我知道这有点多余,我只是不知道如何编辑这段代码来显示我想要的内容。防止在For循环中创建字典时嵌套字典值的覆盖
这里的脚本:https://geert.vanderkelen.org/2010/fetching-rows-as-dictionaries-with-mysql-connectorpython/
反正我这样做的时候,嵌套的字典自动覆盖前面的嵌套字典,即使对于嵌套的字典词典按键改变。我搜索并发现了一些其他的StackOverflow问题,但是一直没能找到我的代码的解决方案。
这里是我的相关代码:
row=curs.fetchone
d={}
D={}
while row is not None:
station=row[u'STATION']
date_obs=row[u'DATE_OBSERVATION']
temperature=row[u'TMPC']
altimeter=row[u'ALTM']
dewpoint=row[u'DWPC']
windspeed=row[u'SPED']
winddirection=row[u'DRCT']
for i in ('date_obs', 'temperature', 'altimeter', 'dewpoint', 'windspeed', 'winddirection'):
d[i]=locals()[i]
D[station]=d
row = curs.fetchone()
print D
我会得到这样的事情(尽管还有更多的字典项):
{u'KBFI ':{date_obs':datetime.datetime (2017,7,19,16,56), '温度':十进制('21.00''露点:'十进制('4.00'), '高度计':十进制('30.10'),'windspeed':十进制('3.00'), 'winddirection':十进制('310.00')},u'KKLS':{date_obs': datetime.datetime (2017,7,19,16,56)“温度”:十进制('21.00' '露点:'十进制('4.00'),'高度计':十进制('30.10'), 'windspeed':十进制( '3.00'), 'winddirection':十进制( '310.00')}}
而想是这样的:
{u'KBFI ':{date_obs':datetime.datetime(2017年''.00''露点:'十进制('5.00'), '高度计':十进制('30 .06'),'windspeed':十进制(' 4.00'), 'winddirection':十进制('270.00')},u'KKLS':{date_obs': datetime.datetime(2017,7,19,16,56),'temperature':十进制('21 .00' '露点:'十进制('4.00'),'高度计':十进制('30.10'), '风速':十进制(' 3.00 '), 'winddirection':十进制(' 310.00' )}}
我看到的一个问题是您输入的字典无效。 ''''date_obs'''没有引号,'''Decimal('21 .00'''没有完全加上括号。 – user2233706