[英]Tuple- Decision Making
有一个10人的家庭。 他们将根据最高票数决定 Sanjay 是要学习 BTECH、BBA 还是 BSC 课程。 每个人都被要求在课程列表中输入他们选择的课程。 课程选择以列表形式输入。 人名和选择包含在元组列表中。 元组中的第一个条目是人名,第二个条目是课程选择。 大多数成员同意课程将是最终决定。 编写一个程序,从给定的输入中找到要学习的课程。 假设没有领带。
输入:
['BTECH','BBA','BSC']
[('A','BTECH'),('B','BSC'),('C','BBA'),('D','BBA'),('E','BTECH'),('F','BTECH'),('G','BBA'),('H','BSC'),('I','BTECH'),('J','BTECH')]
输出:
Sanjay will study BTECH
输入:
['BBA','BCA','BTECH','BSC']
[('A','BCA'),('B','BBA'),('C','BCA'),('D','BTECH'),('E','BBA'),('F','BCA'),('G','BTECH')]
输出:
Sanjay will study BCA
我的确切问题是当我将输入作为元组时,它会将其作为字符串,即使我将其转换为元组,它也会将所有变量分开:
A = input()
B = input()
C = []
for i in range(0,len(B)):
C.append(B[i][1])
print(C)
你可以建立一个字典,其中每个键是一个课程名称,值是选择的数量,然后取最大值
from collections import defaultdict
def get_course(courses):
choices = defaultdict(int)
for _, course in courses:
choices[course] += 1
return max(choices, key=choices.get)
您还可以使用collections.Counter
,这是解决此类问题的非常方便的解决方案
from collections import Counter
def get_course(courses):
return Counter(course for _, course in courses).most_common(1)[0][0]
使用ast.literal_eval
将字符串转换为 Python 结构
from ast import literal_eval
A = "['BTECH','BBA','BSC']"
B = "[('A','BTECH'),('B','BSC'),('C','BBA'),('D','BBA'),('E','BTECH'),('F','BTECH'),('G','BBA'),('H','BSC'),('I','BTECH'),('J','BTECH')]"
courses = literal_eval(A)
choices = literal_eval(B)
print(get_course(choices)) # BTECH
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.