我需要幫助,試圖編寫一個函數來檢測是否有包含多個鍵的字典。所以即時卡住,因爲當使用name_to_age字典將已經是唯一的,所以我不知道如何我可以應用此檢查。python在字典中檢查重複鍵
爲e.g
# the test function should raise an error since there is 2 duplicate keys
name_to_age = {'Sam': 2, 'Sam': 4, 'Alex: 14}
我需要幫助,試圖編寫一個函數來檢測是否有包含多個鍵的字典。所以即時卡住,因爲當使用name_to_age字典將已經是唯一的,所以我不知道如何我可以應用此檢查。python在字典中檢查重複鍵
爲e.g
# the test function should raise an error since there is 2 duplicate keys
name_to_age = {'Sam': 2, 'Sam': 4, 'Alex: 14}
原來的問題是如何編寫可以在字典檢測重複鍵的功能。嚴格地說,字典不能包含重複鍵,但它可以包含具有相同值的對象:Multiple identical keys in a Python dict - yes, you can!
的技巧是使用對象而不是字符串作爲鍵,並覆蓋哈希比較(見How hash collisions are resolved in Python dictionaries):
class person(object):
def __init__(self,name):
self.name = name
def __eq__(self, other):
return False
alternate = {person("Andrew") : "Cambridge", person("Barbara") : "Bloomsbury", person("Andrew"): "Corsica"}
print alternate
下面的評論辯論這些是否重複鍵的技術方面,但這是一個側面問題。回到原來的問題,如果字典實際上可以保存重複鍵,那麼什麼函數會檢測到它們?
爲了找到重複的鍵,你可以這樣做:
def list_duplicates(d):
seen = set()
duplicates = set(x.name for x in d if x.name in seen or seen.add(x.name))
return list(duplicates)
(改編自另一個問題:Find and list duplicates in Python list)
是,multidict和的QueryDict結構爲每個鍵創建值列表,但那些別不能解決原始問題對重複鍵的假設。這個答案創建了一個場景,其中可能有重複的「鍵」並提供檢測它們的功能。
標題涉及重複鍵(這在Python字典中是不可能的),但問題提到了多個鍵。你的意思是? – mambocab
你已經知道答案。 –
嘗試'打印name_to_age'並查看當你重寫一個鍵時會發生什麼... – alfasin