要僅檢查字典是否有5個或更多(key,value)
對,其中僱員的姓名,性別和職業相同,這非常簡單。消除所有這些不一致是棘手的。
# data = {}
# key = 'UID'
# value = ('Name','Male','Accountant','20000')
# data[key] = value
def consistency(dictionary):
temp_list_of_values_we_care_about = [(x[0],x[1],x[2]) for x in dictionary.itervalues()]
temp_dict = {}
for val in temp_list_of_values_we_care_about:
if val in temp_dict:
temp_dict[val] += 1
else:
temp_dict[val] = 1
if max(temp_dict.values()) >=5:
return False
else:
return True
而實際上,得到去掉那些特定值的字典,有兩種方法。
- 編輯並更新原始字典。 (在原地做)
- 創建一個新字典,並只添加那些滿足我們約束的值。
def consistency(dictionary):
temp_list_of_values_we_care_about = [(x[0],x[1],x[2]) for x in dictionary.itervalues()]
temp_dict = {}
for val in temp_list_of_values_we_care_about:
if val in temp_dict:
temp_dict[val] += 1
else:
temp_dict[val] = 1
new_dictionary = {}
for key in dictionary:
value = dictionary[key]
temp = (value[0],value[1],value[2])
if temp_dict[temp] <=5:
new_dictionary[key] = value
return new_dictionary
附:我選擇了更容易做到的第二種方式。選擇第一種方法會導致很多計算開銷,我們當然希望避免這種情況。
來源
2013-11-23 21:21:41
tMJ
什麼是{'key':'value'}對。你如何將數據存儲在'dict'中? 如果您仍然試圖解決這個問題,爲什麼不嘗試一個「面向對象的設計」? – tMJ
http://stackoverflow.com/questions/20150561/class-or-object-instead-of-dictionaries-in-python-2/20151058#20151058 – tMJ
有點取決於你的'dict'的樣子。顯示一個例子。 – roippi