Python Dictionary.values()

时间:2017-09-27 00:59:12

标签: python dictionary

我们说我有一个词典

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()的值,但这样做的最佳方法是什么?

如果需要更多详细信息,请与我们联系。谢谢。

2 个答案:

答案 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