编辑:很抱歉我会解释该计划的用途。这是为了跟踪用户的新体重记录。此文件仅在超过之前带有时间戳的重量记录时才会更新。我希望用户能够使用时间戳查看每个电梯的进度时间线。这就是为什么我使用lift ['key'] = {data:dict}这样他们可以参考每个电梯类型并查询日期例如lift ['snatch'] ['5/25']这将告诉他们什么他们当天最多。但我似乎无法正确地将其写入csv文件。谢谢你的时间!星期五快乐!
我已经研究了几天,似乎无法弄清楚如何将数据添加到特定的 Fieldname ,这是我的dict中最高级别的键。
我要添加的数据是它自己的一个字典。
我如何看待它在CSV文件中的样子:
snatch <> squat <> jerk
10/25:150lbs <> 10/25:200lbs <> 10/25:0lbs
这就是他们创建文件时的样子。我怎么能只更新一个字段。
假设用户只是蹲了那一天,并希望追加数据到字段。
到目前为止我所拥有的:
import time
import csv
lifts={}
csv_columns = ['snatch','squat','jerk']
creation = time.strftime('%M:%S', time.localtime())
lifts['snatch']={creation:'150lbs'}
lifts['squat']={creation:'200lbs'}
lifts['jerk']={creation:'0lbs'}
try:
with open(csv_file, 'w') as csvfile:
writer = csvDictWriter(csvfile, fieldnames=csv_columns)
writer.writeheader()
for data in lifts:
writer.writerow(lifts)
except IOError as (errno, sterror):
print("Error")
return
- &gt;我的一个问题是,当它写入csv文件时,它会将其写入三次。不太清楚为什么。这是我想要的格式,但它有三次。
- &GT;我还想实现下一个代码并写入特定列,当我这样做时,它会在其他列中写入null或空白。
lifts['jerk'].update({time.strftime('%M:%S', time.localtime() : '160lbs'})
然后出去
snatch <> squat <> jerk
10/25:150lbs <> 10/25:200lbs <> 10/25:0lbs 10/26:160lbs
抱歉,我是python的新手,并且没有放弃确定如何使用这个编辑器我希望结果落在{10/25:0lbs}
下,就像它在excel中显示一样。
答案 0 :(得分:0)
跟踪此处发生的事情非常重要:lifts
是一个包含键字符串的词典(&#34;抢夺&#34;,&#34;深蹲&# 34;,&#34; jerk&#34;),其值也是字典。第二级词典将键和字符串的时间戳字符串作为值。
我怀疑当您想要更新lifts['jerk']
字典时,您不会使用与现有条目相同的密钥(时间戳)。
你似乎不需要第二级的字典;考虑使用列表,但如果必须,您可以像这样访问:lifts['jerk'][lifts['jerk'].keys()[0]]
而非相似的 - 再次考虑使用不同的数据类型作为lifts
字典的值或使用键比时间戳更容易引用。
编辑:您可以执行lifts['jerk'] = {'timestamp':creation,'weight':'165lbs'}
之类的操作,这需要对数据进行一些重组。