2017-04-18 98 views
1

我有這樣的結構,轉換的使用json.load(json)檢查給定值是否是一個嵌套的字典

jsonData = [ { 
thing: [ 
    name: 'a name', 
    keys: [ 
     key1: 23123, 
     key2: 83422 
    ] 
thing: [ 
    name: 'another name', 
    keys: [ 
     key1: 67564, 
     key2: 93453 
    ] 
etc.... 
} ] 

我有key1check = 67564, 我要檢查,如果一個事物的key1的這個值匹配

if key1check in val['thing']['keys']['key1'] for val in jsonData: 
    print ('key found, has name of: {}'.format(jsonData['thing']['name']) 

這項工作應該如何?有沒有更好的做法呢?

+2

我猜你的結構應該是字典裏面的字典裏的字典(dictinception)。例如'key#'是鍵'鍵'的字典,並且是鍵'thing'內的字典的一部分,其中還包括鍵'name'和'thing'。如果出現這種情況,您需要查看Python的語法,這是{}是字典的開始和結尾。您可以使用[]引用密鑰,但不要這樣聲明它們。 – Aklys

回答

2

不太:

  1. 是包含在一個序列,如字符串或列表。你正在比較整數值,所以你需要一個簡單的==
  2. 你給定的結構不合法Python:你在幾個你想要字典的地方有括號;你需要花括號。

否則,你做的很好...但你應該問我們是否會工作:通過運行代碼詢問Python解釋器。

試試這個您結構:

jsonData = [ 
{ "thing": { 
    "name": 'a name', 
    "keys": { 
     "key1": 23123, 
     "key2": 83422 
    } } }, 
{ "thing": { 
    "name": 'another name', 
    "keys": { 
     "key1": 67564, 
     "key2": 93453 
    } } } 
] 
0

你可以通過使用這樣的事情,只要結構是一致的@Prune的字典裏循環。

for item in jsonData: 
    if item['thing']['keys']['key1'] == key1check: 
     print("true") 
    else: 
     print("false")