gpt4 book ai didi

python - 如何从列表和字典中生成输出并将它们的结果输出与字典值匹配?

转载 作者:太空宇宙 更新时间:2023-11-03 13:07:29 25 4
gpt4 key购买 nike

正如你们所说,这是一种作业或“家庭作业”问题,我只是在一开始就澄清了。我是 Python 的新手,我真的对这类问题感到困惑。

问题是:护理医院想知道最多患者就诊的医疗专业。假设患者的患者 ID 以及患者就诊的医疗专业存储在列表中。医学专业的详细信息存储在字典中,如下所示:{"P":"儿科","O":"骨科","E":"耳鼻喉科}

编写一个函数来查找最多患者就诊的医疗专科并返回该专科的名称。

我尝试的代码:

def max_visited_speciality(patient_medical_speciality_list,medical_speciality):
speciality_list=[]
for words in patient_medical_speciality_list:
if words in medical_speciality:
speciality_list.append(words)
speciality=max(speciality_list)
return speciality

#provide different values in the list and test your program
patient_medical_speciality_list=[301,'P',302, 'P' ,305, 'P' ,401, 'E' ,656, 'E']
medical_speciality={"P":"Pediatrics","O":"Orthopedics","E":"ENT"}
speciality = max_visited_speciality(patient_medical_speciality_list,medical_speciality)
print(speciality)

示例输入:[101,P,102,O,302,P,305,P]

预期产出:儿科

我得到的输出:P

最佳答案

应该这样做:

def max_visited_speciality(patient_medical_speciality_list, medical_speciality):

# count each speciality patients
counts = {}
for _, speciality in zip(patient_medical_speciality_list[::2], patient_medical_speciality_list[1::2]):
counts[speciality] = counts.get(speciality, 0) + 1

# get most visited speciality by count of it's patients
most_visited_speciality = max(medical_speciality, key=lambda e: counts.get(e, 0))

# return value of most visited speciality
return medical_speciality[most_visited_speciality]


# provide different values in the list and test your program
patient_medical_speciality_list = [301, 'P', 302, 'P', 305, 'P', 401, 'E', 656, 'E']
medical_speciality = {"P": "Pediatrics", "O": "Orthopedics", "E": "ENT"}
speciality = max_visited_speciality(patient_medical_speciality_list, medical_speciality)
print(speciality)

输出

Pediatrics

首先,您需要按专业统计每位患者:

# count each speciality patients
counts = {}
for _, speciality in zip(patient_medical_speciality_list[::2], patient_medical_speciality_list[1::2]):
counts[speciality] = counts.get(speciality, 0) + 1

在那之后 counts = {'E': 2, 'P': 3},因为有 3 名患者访问了“P”,2 名患者访问了“E”。然后将这些值用作 max 中的键:

most_visited_speciality = max(medical_speciality, key=lambda e: counts.get(e, 0))

返回'P'访问次数最多的专业,然后返回medical_speciality字典中'P'的值,

return medical_speciality[most_visited_speciality]

在这种情况下:'Pediatrics'

进一步

  1. max 的文档.
  2. 关于 get 的文档字典的方法。

关于python - 如何从列表和字典中生成输出并将它们的结果输出与字典值匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53894424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com