Python 3.x 创建从列表和字典中检索特定信息的函数

Python 3.x 创建从列表和字典中检索特定信息的函数,python-3.x,Python 3.x,在for循环中,我需要使用list emner first对象在字典karakterer中搜索标记。 我需要帮助的for循环是#使用fag搜索下的循环。我希望它检索列表emner中的第一个对象,并从字典karakter返回结果。所以如果我写geografi,我希望它返回GEO200和GEO300 karakterer = {"INFO100":"A","INFO200":"B", "ECON110":"B", "ECON220":"A", "GEO200":"C", "GEO

在for循环中,我需要使用list emner first对象在字典karakterer中搜索标记。 我需要帮助的for循环是#使用fag搜索下的循环。我希望它检索列表emner中的第一个对象,并从字典karakter返回结果。所以如果我写geografi,我希望它返回GEO200和GEO300

karakterer = {"INFO100":"A","INFO200":"B", "ECON110":"B", "ECON220":"A",
          "GEO200":"C", "GEO300":"E"}

emner = [("informasjonsvitenskap","INFO100"),("økonomi", "ECON110"),
     ("geografi", "GEO200"), ("informasjonsvitenskap","INFO200"),
     ("økonomi", "ECON220"),("geografi", "GEO300")]

def emneliste():
    print("Velg fag og/eller emnenivå (<enter> for alle")
    global emner
    global karakterer
    #this code works
    fag = input('Fag: ')
    nivå = input('Nivå: ')
    if fag == '' and nivå == '':
      for x in karakterer:
          if x in karakterer:
              print(x+' '+karakterer[x])

    #search using fag
    for x in emner:
        rangefag = (int(re.search(r'\d+',x).group()))
        fag = int(fag)
        if fag == informasjonsvitenskap:
           if rangefag in emner[0]:
               print(x+' '+karakterer[x])
        if fag == økonomi:
            if rangefag in emner[0]:
               print(x+' '+karakterer[x])       
        if fag == geografi:
            if rangefag in emner[0]:
               print(x+' '+karakterer[x])

    #search using nivå
    #this code works 
    for x in karakterer:
        rangenivå = (int(re.search(r'\d+',x).group()))
        nivå = int(nivå)
        if nivå == 100:
            if rangenivå in range(100,200):
                if x in karakterer:
                    print(x+' '+karakterer[x])
        elif nivå == 200:
            if rangenivå in range(200,300):
                if x in karakterer:
                    print(x+' '+karakterer[x])
        elif nivå == 300:
            if rangenivå in range(300,400):
                if x in karakterer:
                    print(x+' '+karakterer[x])
karakterer={“INFO100”:“A”、“INFO200”:“B”、“ECON110”:“B”、“ECON220”:“A”,
“GEO200”:“C”,“GEO300”:“E”}
埃姆纳=[(“informasjonsvitenskap”、“INFO100”),(“økonomi”、“ECON110”),
(“geografi”、“GEO200”)、(“informasjonsvitenskap”、“Informa200”),
(økonomi”,“ECON220”),(“geografi”,“GEO300”)]
def emneliste():
印刷品(“Velg fag og/eller emnenivå(用于alle”)
全球埃姆纳
全球卡拉克泰尔酒店
#此代码有效
fag=输入('fag:')
nivå=输入('nivå:')
如果fag==''和nivå='':
对于karakterer中的x:
如果karakterer中有x:
打印(x+“”+karakterer[x])
#使用fag搜索
对于emner中的x:
rangefag=(int(重新搜索(r'\d+',x).group())
fag=int(fag)
如果fag==informasjonsvitenskap:
如果emner[0]中的rangefag:
打印(x+“”+karakterer[x])
如果fag==økonomi:
如果emner[0]中的rangefag:
打印(x+“”+karakterer[x])
如果fag==geografi:
如果emner[0]中的rangefag:
打印(x+“”+karakterer[x])
#使用nivå进行搜索
#此代码有效
对于karakterer中的x:
rangenivå=(int(re.search(r'\d+',x.group())
nivå=int(nivå)
如果nivå=100:
如果范围NIVå在范围内(100200):
如果karakterer中有x:
打印(x+“”+karakterer[x])
elif nivå=200:
如果rangenivå在范围内(200300):
如果karakterer中有x:
打印(x+“”+karakterer[x])
elif nivå=300:
如果rangenivå在范围内(300400):
如果karakterer中有x:
打印(x+“”+karakterer[x])

我不确定我是否理解range函数或regex搜索的所有用法,但这会从列表和字典中获取数据

fag = input('Fag: ')

values = [y if x == fag for x, y in emner] 

for v in values:
    print(karakterer[v])