簡體   English   中英

Python分組計數

[英]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

實際上,要獲得刪除這些特定值的字典,有兩種方法。

  1. 編輯並更新原始詞典。 (就地執行)
  2. 創建一個新的字典,並僅添加那些滿足我們約束條件的值。
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM