检查不同键的所有值是否相同

2024-09-27 21:33:24 发布

您现在位置:Python中文网/ 问答频道 /正文

如果dict中不同键的所有值相同,则我希望返回true,否则返回false:

例如:

这应该返回true:

{1: [1, 1, 1], 2: [1, 1, 1], 3: [1, 1, 1]}) 

这应该返回false

{1: [1, 1, 1], 2: [1, 1, 1], 3: [1, 2, 1]}) 

我尝试了以下方法,但不起作用

        # for i in range(len(votes_grid[0])):
        #     isTie = any(v == i for v in columnTable.values())
        #also tried
              isTie = all(v == i for v in columnTable.values())

Tags: 方法infalsetrueforlenanyrange
3条回答

虽然这是从Mahdi的答案中衍生出来的,但这在一行中是可行的:

dic = {1: [1, 1, 1], 2: [1, 1, 1], 3: [1, 1, 1]} 
check  = len(set(tuple(x) for x in dic.values())) == 1

不能将列表列表放入集合中,因为列表不是可散列对象。但是,您可以将它们设置为元组列表,元组可以散列,因此可以放入一个集合:)

与@saratur相同,但效率更高,因为我没有在其内部嵌套.values()。这使得这个O(n)而不是O(n**2)

pattern = list(columnTable.values())[0]
tie = all(value == pattern for value in columnTable.values())

尝试:

tie = all(value == list(columnTable.values())[0] for value in columnTable.values())

相关问题 更多 >

    热门问题