循环通过Unicode数据字典

时间:2017-09-22 11:49:48

标签: python list loops dictionary

我试图遍历unicode数据列表。 type(d['results'])list。但是,organization_fields实际上是dict,但在查看负载时格式化为unicode。问题是,我如何访问organization_fields?我尝试使用ast.literal_eval(k)更改格式,但尝试这样做时遇到了一些错误。

另外,我收到回复r并将其保存为d = r.json()

我有

       for a in d['results']:
 ...:     for k,v in a.iteritems():
 ...:         print k
 ...:         print type(k)  
 ...:         print('------break-----')

这是输出:

 name
 <type 'unicode'>
 ------break-----
 shared_comments
 <type 'unicode'>
 ------break-----
 url
 <type 'unicode'>
 ------break-----
 organization_fields
<type 'unicode'>
------break-----

organization_fields

    u'organization_fields': {
       u'account_type': None, 
       u'id':  u'some_id', 
       u'value': None
  }, 

更新

当我尝试打印d['results'][0]时,我会获得此处的项目列表。 urlname,除organization_fields之外不存在a。仅当我在上面的for循环

中循环 string sid = ""; sid = Sesion["id"]; 时才存在

2 个答案:

答案 0 :(得分:1)

organization_fields不会存储为unicode。密钥是一个unicode字符串,但是密钥u&#39; organization_fields&#39;存储的值的类型。是使用unicode字符串键存储的更多值的字典。访问组织字段的值与访问任何其他字典的值相同。

如果您想访问for循环中的organization_fields:

for a in d['results']:
    org_fields = a['organization_fields']
    print org_fields

编辑:听起来并不像d [&#39;结果&#39;]中的每个元素都包含一个字典,其中包含由键组织字段存储的值。这应该可以解决问题。

for a in d['results']:
    if 'organization_fields' in a:
        org_fields = a['organization_fields']
        print org_fields

如果您想查看d [&#39;结果&#39;]的哪个索引包含organization_fields的值,请执行以下操作:

for i, a in enumerate(d['results']):
    if 'organization_fields' in a:
        org_fields = a['organization_fields']
        print org_fields
        print 'index: %s' % i

然后,使用从那里打印的索引,您可以直接访问它:

org_fields = d['results'][index printed]['organization_fields']

答案 1 :(得分:0)

我不确定你理解你的问题......

但如果我这样做,你应该尝试类似的事情:

print d['result'][0]['organization_fields']['id']

应打印

some_id

- &GT;我不认为有任何“unicode数据”:有一些带有unicode字符串作为键的字典。