首页 > 解决方案 > 如何从索引中找到特定值?

问题描述

假设input(fag) == informasjonsvitenskap就像 中的值一样list(FagKode),如果这是真的,我希望它打印 karak 中具有与 INFO 相关的元素的值,例如 INFO100、INFO132 和 INFO233。如果input(fag)是 økonomi,我希望它打印 karak 中的值,代码为 ECON。

我是 python 新手,如果我解释得不好,请告诉我。

我的下一个问题是我只会打印与确切值相关的元素,例如 if input(emnenivå) == 100,只会打印 INFO100 和 INFO132 ,如果input(emnenivå) == 200只会打印 INFO233 ,

emner = ['INFO100','INFO132','INFO233']
FagKode = [['informasjonsvitenskap','INFO'],['økonomi','ECON']]
karak = [['INFO100','C'],['INFO132','B'],['INFO233','C'],['ECON218','A']]


def start():
    global meny
    global fag
    meny = int(input('Tast inn ønsket valg (press 0 for meny): '))

    if meny == 1:
      valg_fag = input('Press Enter for å velge fag/emner (Skriv "alle" for å vise alle fag/emner)\n: ')

    if meny == 1 and valg_fag == 'alle':
      for i in karak:
        print(*i)

    elif meny == 1 and valg_fag == '':
      fag = input('- Fag: ')
      emnenivå = int(input('- Nivå: '))
      try:
        if fag in FagKode[0] and emnenivå in range(1,1000):
          ???????
          ???????
        else:
          print('Du har gjort noe feil!')
      except ValueError:
          print('NEI')

start()

提前感谢您的帮助:)

标签: pythonpython-3.x

解决方案


您可以为此使用列表推导:

karak = [['INFO100','C'],['INFO132','B'],['INFO233','C'],['ECON218','A']]

info_items = [item for item in karak if item[0].startswith("INFO")]
econ_items = [item for item in karak if item[0].startswith("ECON")]

print(info_items)
print(econ_items)

关于第二部分:如果 emnenivå 小于 100,应该返回什么?您有两位数的 INFO 项目吗?

编辑: 要将 INFO 与级别 100 或 200 匹配,您只能使用第一个数字emnenivå作为区分因素。emnenivå您可以通过将其转换为字符串并使用 index=0 来获得第一个数字,如下所示: str(emnenivå)[0]. 示例代码:

emnenivå = 123
print("\nExact match for emnenivå={}:".format(emnenivå))
info_items_exact = [item for item in karak if item[0].startswith("INFO{}".format(str(emnenivå)[0]))]
print(info_items_exact)
emnenivå = 200
print("\nExact match for emnenivå={}:".format(emnenivå))
info_items_exact = [item for item in karak if item[0].startswith("INFO{}".format(str(emnenivå)[0]))]
print(info_items_exact)

推荐阅读