如何创建带有两个子列表的字典?

时间:2019-09-29 17:10:59

标签: python django python-3.x django-models django-views

我正在尝试根据集合中的日期使用键循环遍历两个查询集。每个日期都有两种类型的项目:生活事件和工作。字典应如下所示:

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)

我不断收到严重的密钥错误。

3 个答案:

答案 0 :(得分:0)

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'] = {}

答案 1 :(得分:0)

action="{% url 'order:order_page' %}"

t = {}
t['1980'] = {
    'event':'He was born',
    'work':'None'
}

答案 2 :(得分:0)

我不确定您想要什么,但是我想您想初始化一个字典,您可以在其中进行此类分配。您可能需要这样的东西:

from collections import defaultdict
# Create empty dict for assignment
Timeline = defaultdict(defaultdict)
# store values
Timeline['1980']['event'] = "He was born"
Timeline['1992']['work'] = "Symphony No. 1"
# Create a regular dict for checking if both are equal
TimelineRegular = {'1980':{'event':"He was born"},'1992':{'work':"Symphony No. 1"}}
# check
print(Timeline==TimelineRegular)

输出:

>>> True