Python:如何相对于另一个dict字段制作一个dict字段



我看起来像这样:

visits = {'visit_1': {'date': '23-11-2016'},
          'visit_2': {'date': '23-12-2016'}}

dict由许多访问组成,其中"日期"相对于访问_1日期。

问题: python dict可以提及自我吗?这样的东西:

from datetime import datetime, timedelta
visits = {'visit_1': {'date': datetime('23-11-2016')},
          'visit_2': {'date': <reference_to_self>['visit_1']['date'] + timedelta(weeks=4)}

编辑:

初始化时不知道第一次访问。DICT定义了相当复杂的访问序列(用于治疗癌症患者)

如果我正确理解问题,则可以定义创建字典之前的第一个访问日期::

from datetime import datetime, timedelta
visit1_date = datetime(2016, 11, 23)
visits = {'visit_1': {'date': visit1_date},
          'visit_2': {'date': visit1_date + timedelta(weeks=4)}}
print(visits)

为了进一步扩展,您可能会有一个visits 工厂,该将根据开始日期和访问次数动态地创建访问字典(假设访问每4周一次访问平均):

from datetime import datetime, timedelta
def visit_factory(start_date, number_of_visits):
    return {'visit_%d' % (index + 1): start_date + timedelta(weeks=4 * index)
            for index in range(number_of_visits)}

visits = visit_factory(datetime(2016, 11, 23), 2)
print(visits)

python容器(例如词典)可以肯定地指它们自我。您的示例问题是您不仅存储参考,而且是表达式的结果(涉及参考)。该结果本身不会对其制作方式保持任何参考,因此您会失去参考。

另一个小问题是您不能创建对象并在同一表达式中引用它。由于DICT是可变的,因此您可以首先创建其一些元素,然后在其进一步的表达中添加元素,并通过其可变名称引用该元素。

最新更新