繁体   English   中英

元组决策

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM