2013-05-07 31 views
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. 

回答

3

這應該工作:

if len(set(tuple(i) for i in d.values())) == 1 

這首先將列出成元組,使他們可以放入一組(列表不可哈希)。該組刪除所有重複項,因此如果該組的長度爲1,則列表中的所有元素必須相同。

+0

非常好,謝謝波動:) – 2013-05-07 10:18:03