我有一个嵌套字典,如下所示:
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的不同数量在大多数情况下会有所不同
答案 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']