【问题标题】:How do I create a nested dictonary from a specific file?如何从特定文件创建嵌套字典?
【发布时间】:2021-06-22 23:56:50
【问题描述】:

我有一个 CSV 文件,其中的行是这样排列的。

文本中的表格

0 EST Monday Tuesday Wednesday
1 12:00AM Starting
2 7:00PM Prayer Game Night
3 8:00PM Board game Ask anything

我正在尝试创建一个嵌套字典,以便当有人要求一天(例如:星期一)时,将产生当天发生的所有事件以及时间。

my_dict = {'Monday':{'EST':'7:30: PM', 'Event': 'Prayer Meeting', 'EST':'8:00: PM', 'Event': 'Board Game',}}

如果嵌套字典不是正确的方法,请指导我。

【问题讨论】:

  • 请以文本形式分享您的数据
  • 注明。我会这样做的。
  • @Pablo C 已经完成了。

标签: python-3.x pandas csv dictionary nested


【解决方案1】:

当有人要求一天(例如:星期一)时,将产生当天发生的所有事件以及时间。

我认为字典应该看起来不同:

首先使用DataFrame.melt 进行反透视,然后通过DataFrame.dropna 删除缺失值的行,最后在字典理解中使用DataFrame.groupby 并创建嵌套字典:

df1 = df.melt('EST').dropna(subset=['value'])

d = {k: dict(zip(v['EST'], v['value'])) for k, v in df1.groupby('variable')}
print (d)
{'Monday': {'7:00PM': 'Prayer', '8:00PM': 'Board game'},
 'Tuesday': {'12:00AM': 'Starting', '8:00PM': 'Ask anything'},
 'Wednesday': {'7:00PM': 'Game Night'}}

具有不同输出的另一种选择 - 每天创建字典列表 - 在字典理解中使用 DataFrame.to_dict:

df1 = df.melt('EST', value_name='event').dropna(subset=['event'])

d = {k: v[['EST','event']].to_dict(orient='records') for k, v in df1.groupby('variable')}
print (d)
{'Monday': [{'EST': '7:00PM', 'event': 'Prayer'}, 
            {'EST': '8:00PM', 'event': 'Board game'}], 
 'Tuesday': [{'EST': '12:00AM', 'event': 'Starting'}, 
             {'EST': '8:00PM', 'event': 'Ask anything'}], 
 'Wednesday': [{'EST': '7:00PM', 'event': 'Game Night'}]}

【讨论】:

  • 你觉得它应该是什么样子?我对这一切都很陌生,任何建议或意见都会对我有所帮助。
  • @Dave - 当然,我只为时间和事件值更改键的字典
  • 是的,这个解决方案有效。谢谢你。不过,我会喜欢一些解释。或者,如果您可以将我链接到相应的文档。
  • @Dave - 当然,等一下。
猜你喜欢
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-25
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
相关资源
最近更新 更多