需要迭代字典才能找到字符串片段

Jac*_*ahn 4 python dictionary

我有一个函数接受字典作为参数(从另一个有效的函数返回).这个函数应该要求输入一个字符串,并查看字典中的每个元素,看看它是否在那里.字典基本上是三字母缩写:国家即:AFG:阿富汗等等.如果我将'sta'作为我的字符串,它应该将任何具有该团队STATY,AfghaniSTAn,coSTA rica等片段的国家附加到初始化的空列表中,然后返回所述列表.否则,它返回[未找到].返回列表应如下所示:[['Code','Country'],['USA','United States'],['CRI','Costa Rica'],['AFG','Afganistan']]这是我的代码到目前为止的样子:

def findCode(countries):
    some_strng = input("Give me a country to search for using a three letter acronym: ")
    reference =['Code','Country']
    code_country= [reference]
    for key in countries:
        if some_strng in countries:
            code_country.append([key,countries[key]])
    if not(some_strng in countries):
        code_country.append( ['NOT FOUND'])
    print (code_country)
    return code_country
Run Code Online (Sandbox Code Playgroud)

我的代码一直在返回['找不到']

Ste*_*han 5

你的代码:

for key in countries:
    if some_strng in countries:
        code_country.append([key,countries[key]])
Run Code Online (Sandbox Code Playgroud)

应该:

for key,value in countries.iteritems():
    if some_strng in value:
        code_country.append([key,countries[key]])
Run Code Online (Sandbox Code Playgroud)

您需要检查字符串的每个值,假设您的国家/地区位于值而不是键中.

您最后的退货声明:

if not(some_strng in countries):
    code_country.append( ['NOT FOUND'])
Run Code Online (Sandbox Code Playgroud)

应该是这样的,有很多方法可以检查:

if len(code_country) == 1
  code_country.append( ['NOT FOUND'])
Run Code Online (Sandbox Code Playgroud)

  • 你的意思是`countries.iteritems()`? (4认同)