gpt4 book ai didi

python - 过滤不在另一个字典中的值的字典

转载 作者:行者123 更新时间:2023-12-04 17:32:10 26 4
gpt4 key购买 nike

给出了两个字典mydict1mydict2。如果值已包含在 mydict1 中,则应删除 mydict2 中的键值对,无论键如何,也无论值的顺序如何。

下面的代码提供了正确的输出 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

removing items from a list 的解决方案, comparison of dictionariesconditional filtering of a dictionary不能直接转移。

最佳答案

使用列表理解和字典理解对 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)

关于python - 过滤不在另一个字典中的值的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58662235/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com