使用namedtup的多重继承

2024-05-23 18:19:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我打算通过namedtuple构建一个嵌套的数据结构,如下所示

from collections import namedtuple
BinaryDay = namedtuple('BinaryDay', ['AM', 'PM'])
QuaternaryDday = namedtuple('QuaternaryDday', ['Moring','Afternoon','Evening','Night'])
OctonaryDay = namedtuple('OctonaryDay', ['Sunrise', 'Sunshine', 'Hotnoon','Sunset', 'Goldenevening', 'Warmevening', 'Darknight', 'Refreshmorning'])
clock_day = OctonaryDay('07:00-10:00', '10:00-13:00', '13:00-16:00', '16:00-19:00', '19:00-22:00', '22:00-01:00','01:00-04:00', '04:00-07:00')

在控制台中运行以获取这样的输出:

In [71]: clock_day._asdict()
Out[71]:
OrderedDict([('Sunrise', '07:00-10:00'),
             ('Sunshine', '10:00-13:00'),
             ('Hotnoon', '13:00-16:00'),
             ('Sunset', '16:00-19:00'),
             ('Goldenevening', '19:00-22:00'),
             ('Warmevening', '22:00-01:00'),
             ('Darknight', '01:00-04:00'),
             ('Refreshmorning', '04:00-07:00')])

我想要的结果就是这样一个数据结构。你知道吗

{'AM': {'Moring': {'Sunrise': '07:00-10:00',
                   'Sunshine': '10:00-13:00'}
        'Afternoon': {'Hotnoon': '13:00-16:00',
                      'Sunset': '16:00-19:00'},
        },
 'PM': {'Evening': {'Goldenevening': '19:00-22:00',
                    'Warmevening': '22:00-01:00'},
        'Night': {'Darknight': '01:00-04:00',
                  'Refreshmorning': '04:00-07:00'}}}

如何通过多重继承来实现?你知道吗


Tags: 数据结构amnamedtuplepmsunsetsunshinesunrisebinaryday
1条回答
网友
1楼 · 发布于 2024-05-23 18:19:02

这对于namedtuple和多重继承来说都不是一个好的用例。你知道吗

不过,有一个库可能对您有用,所以^{}然后:

>>> data = {'AM': {'Moring': {'Sunrise': '07:00-10:00',
...                           'Sunshine': '10:00-13:00'},
...         'Afternoon': {'Hotnoon': '13:00-16:00',
...                       'Sunset': '16:00-19:00'},
...         },
...  'PM': {'Evening': {'Goldenevening': '19:00-22:00',
...                     'Warmevening': '22:00-01:00'},
...         'Night': {'Darknight': '01:00-04:00',
...                   'Refreshmorning': '04:00-07:00'}}}
... 
>>> from box import Box
>>> clock_day = Box(data)
>>> clock_day.AM.Afternoon
<Box: {'Hotnoon': '13:00-16:00', 'Sunset': '16:00-19:00'}>
>>> clock_day.AM.Afternoon.Sunset
'16:00-19:00'

相关问题 更多 >