用字典写一个表值数年的表?

时间:2016-09-23 14:29:39

标签: python dictionary tuples

我有一个我想写的代码作为Python代码,但我已经陷入困境,无法弄清楚如何去做。

我有两年(1991年和1992年)的数据表,每年有不同的数值(男性:35(1991)和42(1992),女性:38(1991),39(1992)和儿童:15(1991),10(1992)。

我想要的是能够在python中编写一个变量(字典),这使我能够搜索特定年份的特定值(例如:men(1992)= 42)。

到目前为止,我最好的建议是制作包含元组的字典,如下所示:

people = {
    'year': (1991, 1992),
    'men': (35, 42),
    'women': (38, 39),
    'children': (15, 10)
    }

但这显然无法在特定年份搜索特定值。

3 个答案:

答案 0 :(得分:3)

我建议如下:

people = {'1991':{'men':35, 'women':38, 'children':15},
          '1992':{'men':42, 'women':39, 'children':10}}

然后您可以使用以下方式访问特定示例数据:

print(people['1991']['men'])

修改

如果您确实需要使用元组并且还需要标识符/键,则必须使用元组列表,如下所示:

people = {'1991':[('men', 35), ('women', 38), ('children', 15)],
              '1992':[('men', 42), ('women', 39), ('children', 10)]}

使用此变体,您可以访问相同的数据,如:

print(people['1991'][0][1])

答案 1 :(得分:1)

你想要一个嵌套的字典:

people = {
    "men": {
        1991: 35,
        1992: 42
    },
    "women": {
        1991: 38,
        1992: 39
    },
    "children": {
        1991: 15,
        1992: 10
    }
}

现在你可以people['men'][1991]来获得结果35。

答案 2 :(得分:0)

我建议你把字典放在自定义类中。无论数据如何在字典本身中布局,这都将为您提供很大的灵活性,因为您可以创建方法来添加,更改和删除表中隐藏数据结构详细信息的条目。

例如,我们假设您决定在字典中组织数据,如下所示:

{1991: {'men': 35, 'women': 38, 'children': 15},
 1992: {'men': 42, 'women': 39, 'children': 10}}

然后你可以将它包装在这样的类中:

class People(object):
    def __init__(self):
        self._data = {}
    def add(self, year, men, women, children):
        self._data[year] = dict(men=men, women=women, children=children)
    def lookup(self, key, year):
        return self._data[year][key]
    def delete(self, year):
        del self._data[year]

people = People()
people.add(1991, 35, 38, 15)
people.add(1992, 42, 39, 10)

print(people.lookup('women', 1991))  # --> 38
print(people.lookup('men', 1992))  # --> 42