Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用大量值在字典中搜索_Python_String_Dictionary_Search - Fatal编程技术网

在python中使用大量值在字典中搜索

在python中使用大量值在字典中搜索,python,string,dictionary,search,Python,String,Dictionary,Search,在下面的代码中,我展示了一个函数,它可以让你将学生添加到字典(书)中,其中rut是关键,我遇到的问题是,我试图创建一个函数,可以按部门进行搜索,然后打印该部门的所有学生,基本上,我想问的是,如何搜索一个与许多值相关联的一个键的字典,并且要搜索一个特定的值,然后打印所有包含该值的键及其信息 book = {} def add(rut, name, age, department): student = {} student['rut'] = rut student['n

在下面的代码中,我展示了一个函数,它可以让你将学生添加到字典(书)中,其中rut是关键,我遇到的问题是,我试图创建一个函数,可以按部门进行搜索,然后打印该部门的所有学生,基本上,我想问的是,如何搜索一个与许多值相关联的一个键的字典,并且要搜索一个特定的值,然后打印所有包含该值的键及其信息

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]