在python中使用大量值在字典中搜索
在下面的代码中,我展示了一个函数,它可以让你将学生添加到字典(书)中,其中rut是关键,我遇到的问题是,我试图创建一个函数,可以按部门进行搜索,然后打印该部门的所有学生,基本上,我想问的是,如何搜索一个与许多值相关联的一个键的字典,并且要搜索一个特定的值,然后打印所有包含该值的键及其信息在python中使用大量值在字典中搜索,python,string,dictionary,search,Python,String,Dictionary,Search,在下面的代码中,我展示了一个函数,它可以让你将学生添加到字典(书)中,其中rut是关键,我遇到的问题是,我试图创建一个函数,可以按部门进行搜索,然后打印该部门的所有学生,基本上,我想问的是,如何搜索一个与许多值相关联的一个键的字典,并且要搜索一个特定的值,然后打印所有包含该值的键及其信息 book = {} def add(rut, name, age, department): student = {} student['rut'] = rut student['n
book = {}
def add(rut, name, age, department):
student = {}
student['rut'] = rut
student['name'] = name
student['age'] = age
student['department'] = department
book[rut] = student
def printall():
for rut in book:
student = book[rut]
print(student['rut'], student['name'], student['age'], student['department'])
def main():
count = 0
x = 0
y = int(input("How many students will you add?: "))
while count < y:
print('Input data of the student: ', count+1)
rut = input("rut: ")
name = input("name: ")
age = int(input("age: "))
print("Department 1: RH, 2: Logistic, 3: Cleaners, 4: TI ")
department = ''
while x == 0:
num_dept = int(input("department number: "))
if num_dept == 1:
department = "RH"
x = 1
elif num_dept == 2:
department = "Logistic"
x = 1
elif num_dept == 3:
department = "Mathematics"
x = 1
elif num_dept == 4:
department = "TI"
x = 1
else:
print('Error')
x = 0
add(rut, name, age, department)
count = count + 1
printall()
main()
book={}
def添加(车辙、姓名、年龄、部门):
学生={}
学生['rut']=rut
学生['name']=姓名
学生['age']=年龄
学生[系]=系
书[惯例]=学生
def printall():
对于书中的rut:
学生=书本[常规]
打印(学生['rut']、学生['name']、学生['age']、学生['department'])
def main():
计数=0
x=0
y=int(输入(“您将添加多少名学生:”)
当计数小于y时:
打印('学生的输入数据:',计数+1)
车辙=输入(“车辙:”)
名称=输入(“名称:”)
年龄=整数(输入(“年龄:”)
打印(“部门1:RH,2:Logistic,3:Cleaner,4:TI”)
部门=“”
当x==0时:
num_dept=int(输入(“部门号:”)
如果num_dept==1:
department=“右侧”
x=1
elif num_dept==2:
department=“物流”
x=1
elif num_dept==3:
系=“数学”
x=1
elif num_dept==4:
department=“TI”
x=1
其他:
打印('错误')
x=0
添加(车辙、姓名、年龄、部门)
计数=计数+1
printall()
main()
您可以使用
这将为您提供一个列表,如果您愿意,您可以打印出来。您可以使用
这将为您提供一个列表,如果您愿意,您可以打印出来。您能再解释一下吗?我试着使用这个,但是我得到了一个预期的类型“Union[int,slice]”,取而代之的是“str”。我在发布的答案中犯了一个错误-它现在应该可以工作了。话虽如此,我不知道你是怎么得到这个错误的。列表理解只是创建具有特定属性的元素列表的语法糖。在本例中,我们循环遍历
书中的所有学生,如果他们有所需的部门,则将其存储在列表中。我尝试了类似的方法:在书中查找rut:if student['department]==所需的_department:student=book[rut]print(student['rut',student['name',student['age'])student
在if语句中未定义。您需要将学生
声明移到of语句上方,并将打印
放在声明中。您能再解释一下吗?我试着使用这个,但是我得到了一个预期的类型“Union[int,slice]”,取而代之的是“str”。我在发布的答案中犯了一个错误-它现在应该可以工作了。话虽如此,我不知道你是怎么得到这个错误的。列表理解只是创建具有特定属性的元素列表的语法糖。在本例中,我们循环遍历书中的所有学生,如果他们有所需的部门,则将其存储在列表中。我尝试了类似的方法:在书中查找rut:if student['department]==所需的_department:student=book[rut]print(student['rut',student['name',student['age'])student
在if语句中未定义。您需要将student
声明移到of语句上方,并将print
放在其中。
students = [student for student in book.values()
if student["department"] == desired_department]