鉴于字典,我需要一些方法来执行以下操作:
在字典中,我们有姓名,性别,职业和工资。我需要弄清楚我在dictionay中搜索的每个名字,不超过5名其他员工具有相同的名称,性别和职业。如果是这样,我输出它。否则,我删除它。
任何帮助或资源都将不胜感激!
我研究的内容:
count = Counter(在input_file中为tok设置tok ['Name'])
这计算名称的出现次数(即Bob:2,Amy:4)。但是,我还需要在性别和职业上加上这一点(即Bob,M,Salesperson:2,Amy,F,Manager:1)。
答案 0 :(得分: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
P.S。我选择了更简单的第二种方式。选择第一种方法会导致大量的计算开销,我们当然希望避免这种情况。