不是白嫖,我想了一天没想到怎么做,我的代码不用看,试了好多次,但还是没想到……整自闭了,劳驾指导!

img

def find_key(d,values):
    values=list(d.values())
    for i in range(len(values)):
        for j in range(i,len(values)):
            if values[j]==values[i]:
                return 
n=int(input())
datas={}

for i in range(n):
    name_birth=input().split()
    datas[name_birth[0]]=' '.join(name_birth[1]+name_birth[2])
datas=sorted(datas.items(),key=lambda x:(x[1],len(x[0])))
names=[]
birthes=[] 

print(datas)
for i in range(len(datas)):
    a_name=datas[i][0]
    a_birth=datas[i][1]
    names.append(a_name)
    birthes.append(a_birth)
print(names)
print(birthes)
while True:
    for i in range(len(birthes)):
        if birthes[i]=='':
            break
        elif birthes.count(birthes[i]) >=2:
            


#for i in range(len(values)):


#for i in range(len(datas)):
 #   for j in range(i,len(datas)):
  #      if datas[j][1]==datas[i][1] and datas[j][2]==datas[i][2]:
   #         outcomes.append(datas[j][0])
#       datas.remove(datas[j])


这种很显然应该用字典啊,循环多累呀

n=int(input())
d={}
while n:
    name,month,day=input().split()
    birthday=f'{month} {day}'
    if birthday in d:
        d[birthday].append(name) #如果字典里有日期,加入
    else:
        d[birthday]=[name] #如果字典里没有日期,建立新list
    n-=1

lst=list(d.items()) #字典转list
lst=[x for x in lst if len(x[1])>0] #筛选名字多于1个的数据
lst.sort(key=lambda x:int(x[0].split()[0])*100+int(x[0].split()[1])) #按生日排序

if len(lst)>0: #如果有,循环打印
    for i in lst:
        print(i[0],*i[1])
else:
    print('None')