如何将数据(dict)添加到csv文件上的特定字段名(键)?

时间:2015-10-22 16:24:22

标签: python csv dictionary

编辑:很抱歉我会解释该计划的用途。这是为了跟踪用户的新体重记录。此文件仅在超过之前带有时间戳的重量记录时才会更新。我希望用户能够使用时间戳查看每个电梯的进度时间线。这就是为什么我使用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中显示一样。

1 个答案:

答案 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'}之类的操作,这需要对数据进行一些重组。