Python 如何在字典中检查相似的字符串?

Python 如何在字典中检查相似的字符串?,python,algorithm,sorting,dictionary,Python,Algorithm,Sorting,Dictionary,我想得到这些学生中最受欢迎的科目,但我不知道如何至少以一种优雅的方式解决这个问题。我不知道如何查字典。它应该以最常见的答案返回主题 student={ 1:{“姓名”:“A”,“年级”:10,“科目”:“体育”}, 2:{“姓名”:“B”,“成绩”:12,“科目”:“数学”}, 3:{“姓名”:“C”,“成绩”:8,“科目”:“德语”}, 4:{“姓名”:“D”,“年级”:11,“科目”:“数学”}, 5:{“姓名”:“E”,“年级”:6,“学科”:“艺术”}, 6:{“姓名”:“F”,“成绩”

我想得到这些学生中最受欢迎的科目,但我不知道如何至少以一种优雅的方式解决这个问题。我不知道如何查字典。它应该以最常见的答案返回主题

student={
1:{“姓名”:“A”,“年级”:10,“科目”:“体育”},
2:{“姓名”:“B”,“成绩”:12,“科目”:“数学”},
3:{“姓名”:“C”,“成绩”:8,“科目”:“德语”},
4:{“姓名”:“D”,“年级”:11,“科目”:“数学”},
5:{“姓名”:“E”,“年级”:6,“学科”:“艺术”},
6:{“姓名”:“F”,“成绩”:9,“科目”:“英语”}
}
这是我已经尝试过但不知道如何继续的事情的开始,因为我不知道如何查找最大的变量:

对于输入学生:
如果学生[键][“主题”]=“体育”:
最喜欢的运动+=1
elif学生[键][“科目”]=“数学”:
最喜欢的数学+=1
elif学生[key][“subject”]=“德语”:
最喜欢的德语+=1
elif学生[关键][“主题”]=“艺术”:
最喜爱的艺术+=1
elif学生[key][“subject”]=“enlgish”:
最喜欢的英语+=1

我不知道如何以一种好的方式寻找最大的变量…

您可以通过创建一个包含每个主题在答案中出现次数的defaultdict来解决这个问题。然后使用带有lambda比较器的max函数获取最流行的主题,以保持其干净

from collections import defaultdict 

subject_count = defaultdict(lambda: 0)

for ind, student in students.items():
    subject = student['subject']
    subject_count[subject] += 1

print(max(subject_count.items(), key=lambda a: a[1]))

您可以使用集合中的计数器类:

student = {
    1: {"name": "A", "grade": 10, "subject": "sports"},
    2: {"name": "B", "grade": 12, "subject": "maths"},
    3: {"name": "C", "grade": 8, "subject": "german"},
    4: {"name": "D", "grade": 11, "subject": "maths"},
    5: {"name": "E", "grade": 6, "subject": "art"},
    6: {"name": "F", "grade": 9, "subject": "english"}
}

from collections import Counter
favorites = Counter(d["subject"] for _,d in student.items())

print(favorites)
Counter({'maths': 2, 'sports': 1, 'german': 1, 'art': 1, 'english': 1})

print(favorites.most_common(2))
[('maths', 2), ('sports', 1)]

到目前为止你试过什么?请发布代码。我们不是来帮你做作业的(而是在你陷入困境时帮你)。你尝试了什么?一个非常简单的提纲:首先,做一个
dict
来存储每个主题的喜好。在
dict
键上迭代,从1开始并继续,直到您得到一个键不存在的错误。在每个键上,将likes
dict
中的项目更新为一个。如果
dict
中不存在该键,只需添加它即可。最后,迭代likes
dict
,找出最喜欢的项目(或最喜欢的项目)。但是,是的:我们不是来为您编写代码的,您需要先自己尝试一下。如果你有,那么请张贴你的代码,以便我们能够更准确地回答。如果你有代码,就添加它。如果你不知道如何找到最大的变量,那么你需要做更多的研究,而不是让这里的人帮你做工作。这是一个非常糟糕的答案,因为你是在和一个新手说话(代码本身是可以的)。请至少解释一下这段代码的作用。我会在这里使用一个
defaultdict
。@Derlin,对不起,我在写答案时按了Enter键,结果还没来得及写完就被发布了。我明白,这种情况一直发生在我身上。感谢您的编辑。有趣的数据结构,是的defaultdict在这里会更好。