我有一個defaultdict,蟒蛇3.4,對象類似於:如何在字典中的某個值上過濾此python defaultdict?
mydefaultdict = defaultdict(dict)
mydefaultdict['name1']['filename'] = 'name1'
mydefaultdict['name1']['records_available'] = True
mydefaultdict['name2']['filename'] = 'name2'
mydefaultdict['name2']['records_available'] = False
我想創建只是與records_available = True
的過濾子集。到目前爲止,我有一個字典的理解,做:
defaultdict(dict, {k: v['records_available'] for k, v
in mydefaultdict.items() })
這是非常密切的。但我不知道如何實現一個過濾器。如果這是一個基本的字典,像下面這樣會起作用。
defaultdict(dict, {k: v['records_available'] for k, v
in mydefaultdict.items() if v == True })
我已經設法使用嵌套的for, if
循環完成此操作。但是我對這個詞典的理解非常接近,我想知道是否有人可以找到解決方案。解析python集合對我來說是一項日常活動。
我目前的解決方案:
for i in audio_files.values():
if i['records_available']:
filterd_files[i['filename']] = i
編輯: user3100115是正確的。模擬問題數據不會使用user31000115的響應返回一條記錄。
'{k:v for k,v in mydefaultdict.items()if v ['records_available'] == True}' – styvane
@ user3100115:你爲什麼不把它作爲答案? –
user3100115事實證明,我非常累,並且正在使用上面粘貼的代碼。正如你會注意到我的虛擬記錄都是'假'。我實際上嘗試了一個非常類似的解決方案,當然還有零記錄。感謝雙方確認我的理智,並讓我感到羞怯。 ;) – gonzo