如何使用while循环帮助索引/查找与string语句匹配的元素

2024-09-29 21:23:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个函数,它接受一个参数,即一个国家,并为该国定位相邻的首都。例:

countries_and_capitals = (['Afghanistan', 'Kabul'], ['Albania', 'Tirana (Tirane)'], ['Algeria', 'Algiers'], ['Andorra', 'Andorra la Vella'],
['Angola', 'Luanda'], ['Antigua and Barbuda', "Saint John's"], ['Argentina', 'Buenos Aires'],
['Armenia', 'Yerevan'],
['Australia', 'Canberra']

def get_capital_from_the_country(cntry)

并在输入国家/地区后显示首都


Tags: and函数定位参数国家countriesalgeriaalbania
1条回答
网友
1楼 · 发布于 2024-09-29 21:23:56

一种方法是使用for循环并在解包两个值(country和capital)时迭代元组,然后如果找到与参数匹配的国家,则返回capital,如果没有找到国家,则返回消息(此方法更快):

countries_and_capitals = (['Afghanistan', 'Kabul'], ['Albania', 'Tirana (Tirane)'], ['Algeria', 'Algiers'], ['Andorra', 'Andorra la Vella'],
['Angola', 'Luanda'], ['Antigua and Barbuda', "Saint John's"], ['Argentina', 'Buenos Aires'],
['Armenia', 'Yerevan'],
['Australia', 'Canberra'])


def get_capital_from_the_country(cntry):
    cntry = cntry.lower()
    for country, capital in countries_and_capitals:
        if country.lower() == cntry:
            return capital
    return 'Can\'t find that country'


print(get_capital_from_the_country('Afghanistan'))
# Kabul
print(get_capital_from_the_country('Afghanista'))
# Can't find that country
print(get_capital_from_the_country('afghanistan'))
# Kabul
print(get_capital_from_the_country('aFgHaniStan'))
# Kabul

另一种方法是将该元组转换为字典,然后通过使用.get(返回特定消息而不是引发KeyError)轻松访问键(国家)的值(大写):

def get_capital_from_the_country(cntry):
    dct = {k.lower(): w for k, w in countries_and_capitals}
    # alternatively can use:
    # dct = dict(map(lambda x: (x[0].lower(), x[1]), countries_and_capitals))
    return dct.get(cntry.lower(), 'Can\'t find that country')

相关问题 更多 >

    热门问题