在Python中使用哪种数据结构来存储这样的数据?

时间:2013-03-23 16:59:06

标签: python

我想存储数据[年] [月] =天

年和月都可以成为词典的关键。

数据[年] [月] .append(天)之类的操作是可能的。

2 个答案:

答案 0 :(得分:2)

您可以使用嵌套词典:

data[year] = {}
data[year][month] = [day]

为了使这更容易,您可以使用collections.defaultdict

from collections import defaultdict

data = defaultdict(dict)

data[year][month] = [day]

甚至:

def monthdict():
    return defaultdict(list)
data = defaultdict(monthdict)

data[year][month].append(day)

后一种结构的演示:

>>> from collections import defaultdict
>>> def monthdict():
...     return defaultdict(list)
... 
>>> data = defaultdict(monthdict)
>>> data[2013][3].append(23)
>>> data
defaultdict(<function monthdict at 0x10c9d0500>, {2013: defaultdict(<type 'list'>, {3: [23]})})

答案 1 :(得分:1)

你能使用dict-of-dicts-of-lists吗?

data = {'1972' :  {
                   '01': ['a', 'list', 'of', 'things'],
                   '02': ['another', 'list', 'of', 'things'],
                  },
        '1973' :  {
                   '01': ['yet', 'another', 'list', 'of', 'things'],
                  },
        }        

>>> data['1972']['02']
['another', 'list', 'of', 'things']

>>> data['1972']['01'].append(42)
>>> data
{'1972': {'01': ['a', 'list', 'of', 'things', 42],
  '02': ['another', 'list', 'of', 'things']},
 '1973': {'01': ['yet', 'another', 'list', 'of', 'things']}}