生日相同2.0

所属作业: hw8 数据结构: 字典 算法: 排序

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
def find_same_birthdays(students):
    # 创建一个字典来存储生日分类
    birthday_dict = {}

    # 将学生按照生日分类
    for name, month, day in students:
        if (month, day) not in birthday_dict:
            birthday_dict[(month, day)] = [name]
        else:
            birthday_dict[(month, day)].append(name)

    # 对每个生日分类进行排序
    sorted_birthdays = sorted(birthday_dict.items())

    # 输出结果
    flag = False
    for i in birthday_dict:
        if  len(birthday_dict[i]) >= 2:
            flag = True
            break

    if flag == False:
        print("None")       
    else:
        for (month, day), names in sorted_birthdays:
            names.sort(key=lambda x: (len(x), x))  # 按名字长度和字典序排序
            print(f"{month} {day} {' '.join(names)}")

# 读取输入
n = int(input())
students = []

for _ in range(n):
    name, month, day = input().split()
    students.append((name, int(month), int(day)))

# 调用函数输出结果
find_same_birthdays(students)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
n = int(input())
birthday = {}
for i in range(n):
    name, month, day = input().split()
    if (month, day) not in birthday:
        birthday[(month, day)] = []
    birthday[(month, day)].append(name)
flag = False
for i in sorted(birthday.keys()):
    if len(birthday[i]) < 2:
        continue
    flag = True
    birthday[i].sort(key=lambda x: (len(x), x))
    print(i[0], i[1], end=" ")
    for j in birthday[i]:
        print(j, end=" ")
    print()
if not flag:
    print("None")