要仅检查字典是否有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