读取一组电话号码簿(由姓名和手机号码组成),将重复出现的项删除(姓名和电话号码都相同的项为重复项,只保留第一次出现的项),并对姓名相同手机号码不同的项进行如下整理:首次出现的项不作处理,第一次重复的姓名后面加英文下划线字符_和数字1,第二次重复的姓名后面加英文下划线字符_和数字2,依次类推。号码簿中姓名相同的项数最多不超过10个。最后对整理后的电话号码簿按照姓名进行从小到大排序,并输出排序后的电话号码簿。
时间: 2023-05-21 11:06:49 浏览: 80
以下是实现该功能的 Python 代码,供参考:
```
def process_phone_book(phone_book):
name_dict = {}
for i, (name, phone) in enumerate(phone_book):
if (name, phone) in name_dict:
phone_book[i] = (name + '_' + str(name_dict[(name, phone)]), phone)
name_dict[(name, phone)] += 1
else:
name_dict[(name, phone)] = 1
unique_phone_book = list(set(phone_book))
sorted_phone_book = sorted(unique_phone_book, key=lambda x: x[0])
return sorted_phone_book
# 示例用法
phone_book = [('张三', '13812345678'), ('李四', '13987654321'), ('张三', '13812345678'), ('王五', '13788888888'), ('张三', '13812345679'), ('杨六', '18888888888'), ('张三', '13812345678')]
print(process_phone_book(phone_book))
```
该函数的输入为一个元组列表,每个元组中存储一个人的姓名和手机号码。函数通过使用一个字典记录每个姓名和手机号码的出现次数,来实现对电话号码簿的处理。对于重复出现的项,函数会在姓名后面添加 _ 和数字表示该姓名已经在电话号码簿中出现了几次。最后,函数将结果按照姓名进行从小到大排序,并输出排序后的结果。