1、利用字典实现类似于手机通讯录得搜索功能

利用字典实现类似于手机通讯录得搜索功能

contact_list = ['asan', 'zahngsan', 'lisi', 'zahngsi1', 'lisi2', 'zahngsi2', 'lisi3', 'zahngsi3', 'lisi4', 'zahngsi4']

1. 需要对列表中得所有联系人进行分类,首字母相同得归为一类。

2. 将归类后得数据,保存起来。

{‘a’: [‘a1’, ‘a2’, ‘a3’, ‘a4’], ‘z’: [‘z1’, ‘z2’, ‘z3’], ‘l’: [], ‘b’:[]}

[[a, a1, a2, a3], [z, z1, z2]]

def categary_contact():
    # 声明字典,将分类后得联系人,保存在字典中。键就是每一个分类得首字母,值就是列表,内部保存得是首字母相同得联系人。
    contact_dict = {}
    for contact in contact_list:
        # 获取每个联系人
        # print('-----------', contact)
        # 输出结果:
        # ----------- asan
        # ----------- zahngsan
        # ----------- lisi
        # ----------- zahngsi1
        # ----------- lisi2
        # ----------- zahngsi2
        # ----------- lisi3
        # ----------- zahngsi3
        # ----------- lisi4
        # ----------- zahngsi4
        # 获取联系人(字符串)得首字母
        first_char = contact[0]
        # 判断这个first_char首字母对应得键,是否在字典中存在。
        if first_char in contact_dict:
            # 如果字典中已经存在这个键,将该键对应得联系人列表取出来,然后将此次遍历得联系人contact,添加到列表得默认。
            # 通过键first_char,取到字典contact_dict中所对应的所有的值。
            char_contact_list = contact_dict[first_char]
            # 在字典的值上追加我们所获得拥有所有相同首字母的联系人的名字的字符串
            char_contact_list.append(contact)
        else:
            # 字典中不存在这个first_char键。
            # 再字典中新增一个键值对,以first_char为键,contact为值。
            contact_dict[first_char] = [contact]
    # 打印出字典
    return contact_dict


if __name__ == '__main__':
    # 调用这个函数返回的是个字典
    c_dict = categary_contact()
    while True:
        char = input('输入首字母:')
        if char == "exit":
            break
        # 因为调用这个函数返回的是个字典,所以可以把用户输入的字母当做键来找到对应的所有值
        l = c_dict[char]
        # 通过遍历循环出所有值
        for res in l:
            print(res)

你可能感兴趣的:(1、利用字典实现类似于手机通讯录得搜索功能)