python – 从两个词典创建一个新列表
发布时间:2020-12-20 11:53:57 所属栏目:Python 来源:网络整理
导读:这是一个关于 Python的问题.我有以下词典列表: listA = [ {"t": 1,"tid": 2,"gtm": 3,"c1": 4,"id": "111"},{"t": 3,"tid": 4,"c2": 5,"id": "222"},{"t": 1,"id": "333"},{"t": 5,"tid": 6,"id": "444"} ] 和我想要比较的词典: dictA = {"t": 1,"gtm": 3}
这是一个关于
Python的问题.我有以下词典列表:
listA = [ {"t": 1,"tid": 2,"gtm": 3,"c1": 4,"id": "111"},{"t": 3,"tid": 4,"c2": 5,"id": "222"},{"t": 1,"id": "333"},{"t": 5,"tid": 6,"id": "444"} ] 和我想要比较的词典: dictA = {"t": 1,"gtm": 3} 我想创建一个与listA中dictA中的所有项匹配的dicts列表,并包含“id”字段: listB = [ {"t": 1,"id": "333"} ] 我试过这样做: for k in listA: for key,value in k.viewitems() & dictA.viewitems(): print key,value 但它匹配dictA中的任何项目. 解决方法
您需要检查交叉口的长度,只需检查dct.viewitems()&对于任何交叉点,dictA.viewitems()将评估为True:
[dct for dct in listA if len(dct.viewitems() & dictA.viewitems()) == len(dictA)] 或者只检查一个子集,如果来自dictA的项目是每个dict的subset: [dct for dct in listA if dictA.viewitems() <= dct.viewitems()] 或者反转寻找superset的逻辑: [dct for dct in listA if dct.viewitems() >= dictA.viewitems()] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |