我有两个这样的词典列表:
listOne = [{'A':'a','B':'b','C':'c'},{'A':'aa','B':'bb','C':'cc'},{'A':'aaa','B':'bbb','C':'ccc'}]
listTwo = [{'A':'a','B':'b'},{'A':'aa','B':'bb'},{'A':'aaa','B':'bbb'},{'A':'aaaa','B':'bbbb'}]
我想要做的是比较listOne和listTwo他们的' A'密钥,如果没有' A'两个列表中的键,脚本打印出来。
有可能吗?
谢谢;
编辑:
好的,对不起,问题不清楚,所以:
我有两个不同大小的词典列表,listTwo中的词典具有相同的键和listOne中某些词典的相同值,但它们还有一个键。
我需要做的是打印不在listTwo中的词典。
我做不到:
for i in listOne:
if i not in listTwo:
print(i)
因为当然在list中两个词典还有一个元素,所以我不知道如何仅比较这些词典的两个键值......
我想做类似的事情:
for i in listOne:
if i['A'] not in listTwo.elementsKey['A']:
print(i)
但我不知道如何做到这一点......任何可能性?
答案 0 :(得分:1)
def checkList(lst):
for item in lst:
if "A" not in item.keys():
print item
checkList(listOne)
checkList(listTwo)
答案 1 :(得分:0)
好的,我想出了如何解决它(以一种非常非常丑陋的方式):
listOne = [{'A':'a','B':'b','C':'c'},{'A':'aa','B':'bb','C':'cc'},{'A':'aaa','B':'bbb','C':'ccc'}]
listTwo = [{'A':'a','B':'b'},{'A':'aa','B':'bb'},{'A':'aaa','B':'bbb'},{'A':'aaaa','B':'bbbb'}]
listValues = []
for i in listOne:
listValues.append(i['A'])
for i in listTwo:
if i['A'] not in listValues:
print(i)
感谢您的支持:)
答案 2 :(得分:-1)
是的,有可能。
不,SO不是人们为您编写代码的地方。
但要好,(并且缺乏评论此功能的能力),请尝试以下方法:
from itertools import chain
keysA = set(chain.from_iterable([d.keys() for d in listOne]))
keysB = set(chain.from_iterable([d.keys() for d in listTwo]))
if 'A' not in keysA and 'A' not in keysB:
print "'A' not in both lists"
else:
doyourcomparehere