比较不定数量的列表之间是否相等的更好方法

3

我在这里遇到了一些困惑,我正在寻找一种简单而动态的方法来检查字典中所有列表是否相同。

下面是我目前正在使用的示例,但显然我的列表包含实际数据(字符串):

def sample_method(var=10):
    d = {}
    for i in range(var):
        d[i] = range(10)
    return d

def compare_method(d):
    lists = d.values()
    first = lists[0]
    for lst in lists[1:]:
        if first != lst:
            return False
    return True  

print compare_method(sample_method(5))
# returns True

我希望有一种更简单的方法来比较所有列表是否相同。我更喜欢使用一行代码实现,例如:

def desired_method():
    # logic to get d.
    if "all lists are equal": # replace this with the one-liner logic.
        # do more logic.
1个回答

3
这应该可以正常工作:
if len(set(tuple(i) for i in d.values())) == 1

首先,将列表转换为元组,以便可以将它们放入集合中(列表不可哈希)。集合会删除所有重复项,因此如果集合的长度是1,则列表中的所有元素必须相同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接