python - 如何创建一个包含两个子列表的字典?
问题描述
我正在尝试使用基于集合中日期的键遍历两个查询集。每个日期都有两种类型的项目:生活事件和工作。字典应该是这样的:
Timeline['1980']['event'] = "He was born"
Timeline['1992']['work'] = "Symphony No. 1"
Timeline['1993']['event'] = "He was married"
Timeline['1993']['work'] = "Symphony No. 2"
如何创建这本词典?
我尝试了以下方法:
timeline = defaultdict(list)
for o in opus:
if o.date_comp_f is not None:
timeline[o.date]['work'].append(o)
timeline = dict(timeline)
for e in event:
if e.date_end_y is not None:
timeline[e.date]['event'].append(e)
timeline = dict(timeline)
我不断收到错误的关键错误。
解决方案
timeline = {'1980':{'event':'He was born', 'work':'None'}, '1992':{'event':'None', 'work':'Symphony No. 1'}, '1993':{'event':'He was married', 'work':'Symphony No. 2'}}
结果:
>>> timeline['1980']['event']
'He was born'
>>> timeline['1992']['work']
'Symphony No. 1'
>>> timeline['1993']['event']
'He was married'
>>> timeline['1993']['work']
'Symphony No. 2'
这是一个嵌套字典,外部字典是日期键和另一个字典的值。内部字典是具有最终值的工作或事件的键。
并添加更多:
>>> timeline['2019'] = {'event':'Asked stackoverflow question', 'work':'unknown'}
>>> timeline
{'1980': {'event': 'He was born', 'work': 'None'}, '1992': {'event': 'None', 'work': 'Symphony No. 1'}, '1993': {'event': 'He was married', 'work': 'Symphony No. 2'}, '2019': {'event': 'Asked stackoverflow question', 'work': 'unknown'}}
添加新键时,您需要将值设为空字典,并为每个未来键使用占位符。
timeline['year'] = {'work':'', 'event':''}
或者只是一个空字典,尽管您以后可能会丢失键
timeline['year'] = {}
推荐阅读
- mysql - 如何使用 SQL 或 Excel 清理调查数据
- xamarin.android - FirebaseInstanceId.Instance.Token 返回 null
- c# - 在 Xamarin.Forms 应用程序中嵌入 ar.js
- boost - 使用 Boost 1.68 / LLVM / VS2017 时出现“is_assignable”错误
- angular - 每列创建一个单选按钮组
- python - Smartsheet cell link object does not return a status
- git - VCS 文件颜色未在 Android Studio 中显示
- android - Android 模拟器 27.3.9:'WHvGetCapability 失败。hr=0x00000000 whpx_cap.HypervisorPresent?0'
- java - 在 map 函数中创建辅助 RDD
- sql - Mysql 创建插入过程语句不完整