给出了两个字典mydict1
和mydict2
。键-值对,mydict2
如果值已经包含在应该被删除mydict1
,不管关键的且不论值的顺序。
下面的代码提供正确的输出mydict2 = {'key6': [2,1,4], 'key4': [2]}
。但是,它将用作较大代码的一部分。是否有一种更好的方法,例如更具植物性的方法来编写,以使其更紧凑,更有效而无需功能?
mydict1 = {'key1':[1],'key2':[1,2],'key3':[1,2,3]}
mydict2 = {'key4':[2],'key5':[2,1],'key6':[2,1,4]}
mydict3 = {}
for md2 in mydict2:
isindict = False
for md1 in mydict1:
isindict = isindict|(sorted(mydict1[md1])==sorted(mydict2[md2]))
if not isindict:
mydict3[md2] = mydict2[md2]
mydict2 = mydict3
使用列表推导和字典推导对所有值进行排序,mydict2
然后检查其中的排序值mydict1
是否在其中:
mydict1 = {'key1':[1],'key2':[1,2],'key3':[1,2,3]}
mydict2 = {'key4':[2],'key5':[2,1],'key6':[2,1,4]}
vals = [tuple(sorted(x)) for x in mydict1.values()]
mydict2 = {k:v for (k,v) in mydict2.items() if tuple(sorted(v)) not in vals}
print(mydict2)
或者,一行:
mydict1 = {'key1':[1],'key2':[1,2],'key3':[1,2,3]}
mydict2 = {'key4':[2],'key5':[2,1],'key6':[2,1,4]}
mydict2 = {k:v for (k,v) in mydict2.items()
if tuple(sorted(v)) not in [tuple(sorted(x)) for x in mydict1.values()]}
print(mydict2)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句