2017-04-18 108 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") 
相关问题