2012-04-30 30 views
0

值解析其中包含的名字和人的年齡一個JSON文件後,如果單詞的一部分是一個Python字典

{"People": 
    [ 
     { "name":"damon julian", 
      "age":40 
     } 
    ] 
} 

data=json.load(file) 
d1=data["People"][0] 

我喜歡這個

d1={'name':'damon julian','age':40} 

我的字典要找出如果子'damon'中的值之一,在dict.So我試圖

[(k, v) for (k, v) in d1.iteritems() if 'damon' in v] 

^h存在H但是這會給出一個錯誤

TypeError: argument of type 'int' is not iterable 

我一個更好的方式做this.Is我轉換的方法鑄造的值作爲一個字符串

[(k, v) for (k, v) in d1.iteritems() if 'damon' in str(v)] 

我想知道是否有解決了這個json data to dict然後解析正確的值?還是有更好的方法 - 可能使用正則表達式或其他?

請指教。

+4

你真的* *需要看看*所有*的字典的條目,或將'name'值是否足夠? –

+0

我很困惑。你想找到並返回包含你的名字的字段,或者只是返回True,如果它存在? –

+0

如果條件匹配需要返回字段 – damon

回答

0
any(('damon' in v) for v in yourDict.values() if isinstance(v,str)) 

any((isinstance(v,str) and 'damon' in v) for v in yourDict.values()) 

(做筆記,這兩種結構的並不總是等同)

+0

這就像他的第一次嘗試一樣引發異常。 – agf

+0

@agf:啊我明白了。謝謝。固定的 – ninjagecko

+0

'isinstance'是一個過濾條件,所以把它放在生成器表達式的'if'子句中。 – agf

相關問題