[英]Python Group by count
給定字典,我需要一些方法來執行以下操作:
在字典中,我們有姓名,性別,職業和薪水。 我需要弄清楚是否我在詞典中搜索的每個姓名中,姓名,性別和職業均不超過5名其他員工。 如果是這樣,我將其輸出。 否則,我將其刪除。
任何幫助或資源將不勝感激!
我研究了什么:
count =計數器(input_file中tok的tok ['Name'])
這將計算名稱出現的次數(即Bob:2,Amy:4)。 但是,我還需要添加性別和職業(即Bob,男,銷售員:2,Amy,F,經理:1)。
僅檢查字典中是否有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
PS我選擇了更簡單的第二種方法。 選擇第一種方法將導致大量的計算開銷,我們當然希望避免這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.