Python:Python()

cgvd09ve  于 2023-03-21  发布在  Python
关注(0)|答案(3)|浏览(131)

第一篇文章!我正在慢慢地用Python自动化无聊的东西,并且正在用get()方法和字典做一些实验(第5章)。我写了一小段代码来告诉我我输入的国家的首都,或者,如果它不在我的字典中,首都城市是“不可用的”。
然而,即使我输入字典中包含的国家/地区,也会出现“不可用”的响应。对此有什么见解吗?我尝试在Google上搜索在get()方法中使用字典的情况,但没有找到太多解释这个问题的答案。代码如下:

capitals = {'Australia': 'Canberra', 'England': 'London', 'South Africa': 'Pretoria'}
print('Choose country')
country = input()
print('The capital of ' + country + ' is ' 
      + capitals.get(capitals[country], 'not available'))
56lgkhnf

56lgkhnf1#

get方法 * 替换了 * __getitem__(通常通过括号表示法访问)。capitals.get(capitals[country], 'not available')实际上执行了两个查找:

  1. capitals[country]查找首都,例如堪培拉。
  2. capitals.get(...)然后查找首都的名称作为国家。很少有这种情况不会失败。
    如果你查找一个不存在的国家,capitals[country]只会引发一个KeyError
    你可能想做的是
capitals.get(country, 'not available')

还有一个需要注意的问题是Python字典是区分大小写的,无论传入的是Australiaaustralia还是aUstrAlIA,都可能需要返回Canberra,标准的方法是将字典的键全部小写,然后使用小写或大小写合并的版本进行查找:

capitals = {'australia': 'Canberra', 'england': 'London', 'south africa': 'Pretoria'}
country = input('Choose country: ')
print('The capital of', country, 'is', capitals.get(country.casefold(), 'not available'))

请注意,我将第一个print替换为input的参数,并删除了第二个print中的+运算符。

um6iljoc

um6iljoc2#

下面是Synax的get()方法:

dict.get(key, default = None)

在你的字典里,关键词是“澳大利亚”这样的国家。
在您的代码中:

capitals.get(capitals[country], 'not available')

capitals[country]不是密钥,你需要像这样使用它:

capitals.get(country, 'not available')
68bkxrlz

68bkxrlz3#

为当前的Python学生简单编辑代码

capitals = {'Australia': 'Canberra', 'England': 'London', 'South Africa': 'Pretoria'}
country = input('Insert country > ').title()
output = capitals.get(country, 'Not Available in Dict')
print(f'The capital of {country} is {output}')

编辑:

  • 使用.title()方法将输入的任何国家名称转换为标题格式,以便与字典中的命名格式匹配
  • 创建一个变量来存储大写的name=“key value”,然后再打印出来。这里的变量是output

相关问题