访问嵌套字典中的值

时间:2015-11-17 00:39:16

标签: python dictionary nested python-3.3

嵌套字典的长度为12,这是其中一条记录:

{('ALEXANDER', 'MALE'): {'2010': ('2619', None), '2011': ('2494', None), '2009': ('2905', None)}, ...

主键= ('ALEXANDER', 'MALE')

主要值(嵌套词典)= {'2010': ('2619', None), '2011': ('2494', None), '2009': ('2905', None)}

嵌套字典键/值= '2010': ('2619', None) ...

如何访问年份'2010'和价值'2619'

是否可以使用变量执行此操作?

4 个答案:

答案 0 :(得分:2)

如果D = {'2010': ('2619', None), '2011': ('2494', None), '2009': ('2905', None)}

然后D.keys()返回字典['2009', '2011', '2010']

中的键列表

然后,您可以2010访问D.keys()[-1]的值,2619访问D[D.keys()[-1]][0]

答案 1 :(得分:1)

这可能会指向正确的方向:

>>> d= {('ALEXANDER', 'MALE'): {'2010': ('2619', None), '2011': ('2494', None), '2009': ('2905', None)}}
>>> for mainKey in d:
    print(mainKey)
    for key,val in d[mainKey].items():
        print(key,val[0])


('ALEXANDER', 'MALE')
2011 2494
2009 2905
2010 2619

答案 2 :(得分:0)

data = {
    ('ALEXANDER', 'MALE'): {'2010': ('2619', None), '2011': ('2494', None), '2009': ('2905', None)},
    # ...
}
value, _ = data[('ALEXANDER', 'MALE')]['2010']

然后value = '2619'

答案 3 :(得分:0)

当你的词典键是一个元组时,我个人更喜欢使用namedTuple函数。这允许您以干净和可读的方式访问字典中的元素。

在下面的代码中,我提出了一种使用namedTuple构造的方法以及一些进一步访问元素的方法。

from collections import namedtuple

my_dict = {('ALEXANDER', 'MALE'): {'2010': ('2619', None), '2011': ('2494', None), '2009': ('2905', None)}}

person = namedtuple("Person", ["name", "sex"])
nt1 = person(name="ALEXANDER", sex="MALE")
print nt1.name
# outputs "ALEXANDER"
print nt1.sex
# outputs "MALE"
print my_dict[nt1]
# outputs {'2009': ('2905', None), '2011': ('2494', None), '2010': ('2619', None)}
print my_dict[nt1].keys()
# outputs ['2009', '2011', '2010']
print my_dict[nt1]['2010']
# outputs ('2619', None)
print my_dict[nt1]['2010'][0]
# outputs 2619