2. 利用字典实现类似于手机通讯录的联系人分组功能(复杂方法)

itemgetter用来去dict中的key,省去了使用lambda函数

from operator import itemgetter

itertool还包含有其他很多函数,比如将多个list联合起来。

from itertools import groupby

d1 = {'name': '1张三', 'age': 20, 'country': 'China'}
d2 = {'name': 'wangwu11', 'age': 19, 'country': 'USA'}
d3 = {'name': 'lisi1', 'age': 22, 'country': 'JP'}
d4 = {'name': 'zhaoliu', 'age': 22, 'country': 'USA'}
d5 = {'name': 'pengqi', 'age': 22, 'country': 'USA'}
d6 = {'name': 'lijiu', 'age': 22, 'country': 'China'}
lst = [d1, d2, d3, d4, d5, d6]

通过name进行分组:

需要先排序,然后才能分组。lst排序后自身被改变

lst.sort(key=itemgetter('name'))
lst1 = groupby(lst, itemgetter('name'))

group是一个迭代器,包含了所有的分组列表

for key, group in lst1:
    for g in group:
        # print(key, g)
        print(key)
def search():
    for x in range(0, len(lst)):
        l = lst[x]
        name = l['name']
        # print(name)
    name1 = (input('请输入要搜索的联系人姓名'))
    if name1 in name:
        print('找到联系人:', name)
    else:
        print('联系人 %s 不存在' % name)


search()

你可能感兴趣的:(2. 利用字典实现类似于手机通讯录的联系人分组功能(复杂方法))