2016-07-04 211 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]