我们说我有一个词典
a = [{'shape': 'square', 'size': 'large', 'color': 'blue'}]
带值
a.values() = ['square','large','blue']
我想将它与我的列表
进行比较myList = ['square', 'large', 'blue']
我想比较这两个对象,以便在比较它们时它们等于True,例如:
if list(a.values().values()) == myList:
return True
所以我认为我需要获取a.values()的值,但这样做的最佳方法是什么?
如果需要更多详细信息,请与我们联系。谢谢。
答案 0 :(得分:1)
dict
没有定义的顺序(更确切地说,键具有任意顺序,并且值遵循与键相同的顺序)。如果要检查values
是否与预期的值集匹配,则需要使用set操作来正确执行,或对值进行排序。
如果无法复制,您只需将值和值集转换为test set
并进行比较:
set(a.values()) == set(myList)
如果有可能存在重复项,您可能需要排序和比较(O(n log n)
)或使用collections.Counter
(需要导入,但O(n)
):
sorted(a.values()) == sorted(myList)
或
from collections import Counter
Counter(a.values()) == Counter(myList)
答案 1 :(得分:0)
您可以使用all()
迭代new_list
中包含的字典的每个值,并检查myList
中是否存在该值:
new_list = a.values() #new_list contais[{'shape': 'square', 'size': 'large', 'color': 'blue'}]
myList = ['square', 'large', 'blue']
if all(i in myList for i in new_list[0].values()):
pass