2016-07-04 161 views
-2

地图我有一个这样的数据结构:通过迭代(?JSON)在Python

sample_map= {'key1': {'internal_key1': ['value1']}, 
      'key2': {'internal_key2': ['value2']}, 
       } 

我想重复throgh在每一行key1的和KEY2。我想获得'internal_key1'和'value_1'变量的值。

我试着这样说:

for keys in sample_map.keys(): 
    for value in sample_map[keys]: 
     #get internal_keys and values 

我应该怎么办呢?有人可能会告诉我关于这个数据结构和使用情况吗?

+0

你可能想看看[JMESPath](http://jmespath.org/)。这对于json文件上的这类任务会非常有帮助。 – Kylar

回答

0

如何如下:

for k,v in sample_map.iteritems(): 
    print k 
    for k1,v1 in v.iteritems(): 
     print k1,v1[0] 

这将打印以下内容:

key2 
internal_key2 value2 
key1 
internal_key1 value1 
2
for item in sample_map.values(): 
    for k, v in item.items(): 
     print k, v 
1

这被称为字典(类型dict)。它确实类似于JSON结构,尽管JSON是一种用于表示特定数据结构的字符串格式,而dict是一种数据结构(可以转换为JSON格式的字符串)。

无论如何,这条线 - for value in sample_map[keys]:是无效的。要获得链接到某个键的值,您只需要执行value = sample_map[keys]。在这个例子中,dict将被分配给val。这些将是内部dict s({'internal_key1': ['value1']}等)。

所以访问内部键,通话.keys()value的:

for keys in sample_map.keys(): 
    value = sample_map[keys]: 
    for internal_key in value.keys(): 
     internal_value = value[internal_key] 

此外,使用一个for循环时,有没有必要dict.keys(),它会自动使用,所以你的代码可能是这样的:

for keys in sample_map: 
    value = sample_map[keys]: 
    for internal_key in value: 
     internal_value = value[internal_key]