通过内部键字典python中的值选择外部键

时间:2015-01-15 16:14:38

标签: python dictionary

我有一个嵌套字典,如下所示:

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

我想收集由不同的source / source_id分组的所有上键 如:

源'a'和'source_id'1

['user1', 'user2']

来源'b'和'source_id'1

['user3'] 

等等

源/ source_id的不同数量在大多数情况下会有所不同

2 个答案:

答案 0 :(得分:0)

你可以使用dict理解来做到这一点

{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}

答案 1 :(得分: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']