如何从此数据结构中提取特定值?

时间:2019-05-08 20:24:55

标签: python python-3.x

我有一列填充了这样的值:

t=OrderedDict([('attributes', OrderedDict([('type', 'Marks'), ('url', 'data/v38.0')])), ('Account', OrderedDict([('attributes', OrderedDict([('type', 'Account'), ('url', 'data/v38.0')])), ('ID', 'A200')]))])

我尝试使用以下内容提取“ ID”的最后一个值:

StudentID= t[0]['ID']

但是它抛出一个错误。访问“ ID”值“ A200”的正确方法是什么?

4 个答案:

答案 0 :(得分:2)

尝试StudentID = t['Account']['ID']

Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import OrderedDict
>>> t = OrderedDict([('attributes', OrderedDict([('type', 'Marks'), ('url', 'data/v38.0')])), ('Account', OrderedDict([('attributes', OrderedDict([('type', 'Account'), ('url', 'data/v38.0')])), ('ID', 'A200')]))])
>>> t['Account']['ID']
'A200'

# a bit more
>>> from pprint import pprint
>>> pprint(t)
OrderedDict([('attributes',
              OrderedDict([('type', 'Marks'), ('url', 'data/v38.0')])),
             ('Account',
              OrderedDict([('attributes',
                            OrderedDict([('type', 'Account'),
                                         ('url', 'data/v38.0')])),
                           ('ID', 'A200')]))])

答案 1 :(得分:1)

应该这样访问它:

t['Account']['ID']

答案 2 :(得分:1)

访问此文件的正确方法是: t['Account']['ID']

答案 3 :(得分:0)

尝试打印对象以查看其设置:

for key, value in t.items():
    print('\t', key)
    for subkey, subvalue in value.items():
        print('\t\t', subkey, subvalue)

这将显示:

 attributes
     type Marks
     url data/v38.0
 Account
     attributes OrderedDict([('type', 'Account'), ('url', 'data/v38.0')])
     ID A200

因此,帐户是第二项,而不是第一项。但是,OrderedDicts仍然不会按索引而是按键来获取项目。这是因为整数是有效的键,例如,如果t看起来像t [0]不一定是插入的第一项:

t=OrderedDict([(1, 'thing1'), (0, 'thing2')])

因此访问此项目的正确方法是:

t['Account']['ID']