這個問題在這里已經有了答案: 檢查串列中的所有元素是否相同 26 個答案 19 小時前關閉。
我要比較字典的值,看看它們是否一致;如果字典是 {'k1':'v2','k2':'v2','k3':'v2'} 我想比較在這種情況下都相同的值并且python列印三個值是 我目前使用的代碼給了我一個重復元素的串列,這是不好的。代碼:
d1={'k1':'v2','k2':'v2','k3':'v2'}
l=[]
for v in d1.keys():
for c in d1.keys():
if d1[v] == d1[c]:
l.append(c)
if len(l)==0:
print('No keys have same values!')
else:
print(l)
提前致謝
uj5u.com熱心網友回復:
如果您要查看字典的所有值是否都相同,那么您可以執行以下操作:
d1 = {"k1": "v2", "k2": "v2", "k3": "v2"}
if len(set(d1.values())) == 1:
print("All values are the same")
說明: d1.values() 包含所有值, set() 對其進行重復資料洗掉, len() 提供長度。如果只有 1 個去重值,則所有值必須相同。
如果您正在尋找相同的值的計數(即使它們并不完全相同,那么您可以使用它的變體,將去重值的數量與鍵的數量進行比較。
uj5u.com熱心網友回復:
這應該作業 -
d1={'k1':'v2','k2':'v2','k3':'v2'}
l={}
for v in d1.keys():
l[d1[v]] = list(d1.values()).count(d1[v])
if 0 in list(l.values()):
print('No keys have same values!')
else:
print(f'{list(l.values())[0]} keys have same values')
uj5u.com熱心網友回復:
如果您的值可以是字典的鍵,換句話說是可散列型別,那么您可以使用計數字典(并且您str
的型別是可散列的)執行非常快速(線性復雜度)的演算法。
在最后的代碼輸出所有重復項(出現多次的值)之后,重復項顯示為成對的值和重復次數。
在線嘗試!
d1={'k1':'v2','k2':'v2','k3':'v2'}
cnt = {}
for e in d1.values():
cnt[e] = cnt.get(e, 0) 1
cnt = sorted(cnt.items(), key = lambda e: e[1], reverse = True)
if len(cnt) > 0 and cnt[0][1] > 1:
print('There are duplicates:', {a : b for a, b in cnt if b > 1})
else:
print('No keys have same values!')
輸出:
There are duplicates: {'v2': 3}
使用標準庫類collections.Counter可以更短地實作與上面相同的代碼。
在線嘗試!
import collections
d1={'k1':'v2','k2':'v2','k3':'v2'}
cnt = collections.Counter(d1.values()).most_common()
if len(cnt) > 0 and cnt[0][1] > 1:
print('There are duplicates:', {a : b for a, b in cnt if b > 1})
else:
print('No keys have same values!')
輸出:
There are duplicates: {'v2': 3}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/420083.html
標籤:
上一篇:無法理解這個函式的作用
下一篇:返回列表