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

Python 如何将数据(dict)添加到csv文件上的特定字段名(键)?,python,csv,dictionary,Python,Csv,Dictionary,编辑:对不起,我会解释这个程序的用途。这是为了跟踪用户的新体重记录。此文件仅在其超过之前带有时间戳的重量记录时更新。我希望用户能够使用时间戳查看每次提升的进度时间线。这就是为什么我使用lift['key']={data:dict},这样他们就可以引用每种类型的lift,并查询日期,例如lift['satch']['5/25'],这将告诉他们当天的最大值。但我似乎无法将其正确写入csv文件。谢谢你抽出时间!星期五快乐 我已经研究了好几天,似乎不知道如何将数据添加到特定的字段名中,该字段名是我字典中

编辑:对不起,我会解释这个程序的用途。这是为了跟踪用户的新体重记录。此文件仅在其超过之前带有时间戳的重量记录时更新。我希望用户能够使用时间戳查看每次提升的进度时间线。这就是为什么我使用lift['key']={data:dict},这样他们就可以引用每种类型的lift,并查询日期,例如lift['satch']['5/25'],这将告诉他们当天的最大值。但我似乎无法将其正确写入csv文件。谢谢你抽出时间!星期五快乐

我已经研究了好几天,似乎不知道如何将数据添加到特定的字段名中,该字段名是我字典中最高级别的键

我要添加的数据是它自己的dict

我在CSV文件中看到它的样子:

snatch         <>     squat          <>    jerk
10/25:150lbs   <>     10/25:200lbs   <>    10/25:0lbs   
->我的问题之一是,当它写入csv文件时,它会将其写入三次以上。不太清楚为什么。这是我想要的格式,但有三次

->我还想实现下一个代码并写入特定列,当我这样做时,它会在其他列中写入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
抓举蹲挺举
10/25:150磅10/25:200磅10/25:0磅10/26:160磅

很抱歉,我是python新手,不知道如何使用这个编辑器。我想让结果像在excel中显示的那样放在
{10/25:0lbs}
下。

跟踪这里发生的事情很重要:
lifts
是一个带有键字符串的字典(“抓取”、“蹲下”、“猛拉”)其值也是字典。第二级字典具有键的时间戳字符串和作为值的字符串

我怀疑,当您想要更新
lifts['jerk']
字典时,您没有使用与现有条目相同的键(时间戳)

第二级似乎不需要词典;考虑使用一个列表,但是如果必须的话,你可以访问如下:<代码>升降机[jelk ] [Loots[jelk] ] .KEY()[0 ] ] /Script >这是相当有缺陷的——再次,考虑使用不同的数据类型来对你的代码>升降机字典或使用比时间戳更容易引用的键使用不同的数据类型。
编辑:你可以做一些类似于
lifts['jerk']={'timestamp':creation,'weight':'165lbs'}
的事情,这需要对你的数据进行一些重组。

你在使用模块吗?你的数据结构很差。您应该为日期设置一个单独的列,并且最好为每个练习设置一个单独的行,这样您的列将类似于
date、exercise、weight
。这样,您就可以通过额外的列(如
reps、set、cc_of_steroids
)轻松地获得更细粒度。如果文件行中的项目不一定相互关联,则可以以不同的方式组织文件。例如,您可以将提升类型(抓举、蹲下或挺举)设置为字段中的值,而不是单独的字段。感谢您的回复和建议!你能给我举个例子吗?我只编了一个星期的程序,所以我不知道还有其他结构。是的,我使用csv将其保存到excel文档中。至于我,我使用这种格式是为了能够通过日期参考他们提升了多少升降机['jerk']['5/28']'将为用户提供当天所举起的最大重量。我知道我的时间戳是以分钟和秒为单位的,为了确保它正常工作,我会稍后更改格式。谢谢你的回答!在程序中的文件创建功能期间,我只使用了一次创建。我想使用dicts的原因是能够参考用户在那个日期提升了多少。使用您编辑的示例不会将日期与他们举起的重量联系起来吗?这取决于您如何看待您的数据:就我个人而言,我会将您的数据反转,并将时间戳存储在顶层,并在其下方使用不同的举起类型:
lifts['10/19']['jerk']
或其他什么,这会给您一个类似于
lifts={'10/19':{'130lb','130lb','抓举':'100lb'}
。如何将日期与数据关联是一个选择问题。再次感谢您的建议!我想这会违背我的目的。我想我应该解释一下我的程序。它会记录个人记录。因此,如果用户今天在蹲下时打破了记录,那么他可以更新他的文件。但是使用您的方法,我相信如果他没有蹲下,那么t天,当他要写入文件时,他会最大限度地增加一个空值,这是我现在在该行遇到的问题。因此,如果我查询最新更新或时间线的数据,它会显示一堆0。有没有办法解决这个问题?再次感谢您的时间!好的-那么第二层字典中的每个元素对于该da都是最大的y?那很好,但是现在我不确定你的问题是什么。如果你只想显示那本词典的一个条目(
{'10/19':'0lbs','10/20':'160lbs')
有两个条目),你必须想出一些方法来选择其中一个。
snatch         <>     squat          <>    jerk
10/25:150lbs   <>     10/25:200lbs   <>    10/25:0lbs    10/26:160lbs