【问题标题】:Accessing values in nested dictionary访问嵌套字典中的值
【发布时间】:2015-11-17 00:39:15
【问题描述】:

嵌套字典的长度为 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' 的值?

是否可以使用变量来做到这一点?

【问题讨论】:

  • 你的预期输出是什么?
  • 嗨,预期的输出之一是根据年份和计数对名称进行排名(在示例中为 count = '2619')。 “无”将成为类似 (1 , 2, 3 ...) 的排名

标签: python dictionary nested python-3.3


【解决方案1】:

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

然后D.keys()返回字典中的键列表['2009', '2011', '2010']

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

【讨论】:

    【解决方案2】:

    这可能会为您指明正确的方向:

    >>> 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
    

    【讨论】:

      【解决方案3】:
      data = {
          ('ALEXANDER', 'MALE'): {'2010': ('2619', None), '2011': ('2494', None), '2009': ('2905', None)},
          # ...
      }
      value, _ = data[('ALEXANDER', 'MALE')]['2010']
      

      然后value = '2619'

      【讨论】:

        【解决方案4】:

        当你的字典的键是一个元组时,我个人更喜欢使用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
        

        【讨论】:

          猜你喜欢
          • 2012-07-26
          • 1970-01-01
          • 2013-09-29
          • 2012-05-11
          • 1970-01-01
          • 2019-02-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多