2015-01-15 67 views
0

我有一個嵌套的字典,它看起來像:在內部密鑰選擇外鍵由值字典蟒

mydict = {'user1':{source:'a',source_id:'1'}, 'user2':{source:'a',source_id:'1'}, 'user3':{source:'b',source_id:'1'}, ...} 

我想收集由不同的源分組的所有上鍵/ SOURCE_ID 如:

源 'a' 和 'SOURCE_ID' 1

['user1', 'user2'] 

源 'b' 和 'SOURCE_ID' 1

['user3'] 

源的鮮明數/ SOURCE_ID將不同的大部分時間

+0

你'mylist'不是有效的列表 – CoryKramer 2015-01-15 16:15:59

+0

抱歉它是一個字典 – user3613909 2015-01-15 16:19:24

回答

0

您可以使用字典的理解來做到這一點

{key:value for key, value in d.items() if value.get('source') == 'a' and value.get('source_id') == '1'} 

更普遍

def filterBy(source, source_id): 
    return {key:value for key, value in d.items() if value.get('source') == source and value.get('source_id') == source_id} 
0

您可以使用帶有if條件的列表理解:

>>> mylist = {'user1':{'source':'a','source_id':'1'}, 'user2':{'source':'a','source_id':'1'}, 'user3':{'source':'b','source_id':'1'}} 
>>> [i for i in mylist if (mylist[i]['source']=='a' and mylist[i]['source_id']=='1')] 
['user2', 'user1'] 
>>> [i for i in mylist if (mylist[i]['source']=='b' and mylist[i]['source_id']=='1')] 
['user3'] 
+0

我不能硬編碼源/ SOURCE_ID – user3613909 2015-01-15 16:21:00

+0

@ user3613909我不知道,但我不得不爲例子。如果你不這樣做,應該工作。 – fredtantini 2015-01-15 16:22:26