python函数在dictional中用于循环
我正在尝试从字典中的特定键检索所有项。代码正常工作,但我在函数python函数在dictional中用于循环,python,function,dictionary,for-loop,Python,Function,Dictionary,For Loop,我正在尝试从字典中的特定键检索所有项。代码正常工作,但我在函数general\u info的输出中不断收到None语句。另一个功能特定信息工作正常。有什么建议吗?非常感谢 countries = { "canada": { 'name': "Canada", 'location': "North America", 'currency': "Canadian Dollar", 'capital city': "Ottawa", 'population':
general\u info
的输出中不断收到None
语句。另一个功能特定信息
工作正常。有什么建议吗?非常感谢
countries = {
"canada": {
'name': "Canada",
'location': "North America",
'currency': "Canadian Dollar",
'capital city': "Ottawa",
'population': "32.268.240",
'area': "9.970.610 km2"
},
"brazil": {
'name': "Brazil",
'location': "South America",
'currency': "Brazilian Real",
'capital city': "Brasilia",
'population': "186.404.900",
'area': "8.514.877 km2"
},
"ukraine": {
'name': "Ukraine",
'location': "Europe",
'currency': "Ukrainian Hryvnia",
'capital city': "Kyiv",
'population': "46.480.700",
'area': "603.700 km2"
},
"haiti": {
'name': "Haiti",
'location': "North America",
'currency': "Haitian Gourde",
'capital city': "Port-au-Prince",
'population': "8.527.777",
'area': "27.750 km2"
},
"albania": {
'name': "Albania",
'location': "Europe",
'currency': "Albanian Lek",
'capital city': "Tirana",
'population': "3.129.678",
'area': "28.748 km2"
},
"india": {
'name': "India",
'location': "Asia",
'currency': "Indian Rupee",
'capital city': "New Delhi",
'population': "1.103.371.000",
'area': "3.287.263 km2"
}
}
def general_info(c_name):
for key, val in countries[c_name].items():
info = print(c_name.title() + " " + key + " is " + val)
return info
def specific_info(c_name, info):
if c_name in countries and info in countries[c_name].keys():
return (info.title() + " from " + c_name.title() + " is " + countries[c_name][info])
ask_country = input("Country name: ")
ask_info = input("Information requested: ")
c_name = ask_country.lower()
info = ask_info.lower()
print(general_info(c_name))
print()
print(specific_info(c_name, info))
您将返回print语句的返回值,该值始终为None。只需去掉指纹 下面的代码中存在多个问题:
def general_info(c_name):
for key, val in countries[c_name].items():
# overwrites info in every iteration
# you are saving return value of print function
info = print(c_name.title() + " " + key + " is " + val)
return info # return only last iteration "info"
def specific_info(c_name, info):
if c_name in countries and info in countries[c_name].keys(): # you can simply write info in countries[c_name]. No need of ".keys()" method
return (info.title() + " from " + c_name.title() + " is " + countries[c_name][info])
要返回常规信息,您应执行以下操作:
def general_info(c_name):
general_info = []
for key, val in countries[c_name].items():
info = (c_name.title() + " " + key + " is " + val)
general_info.append(info )
return general_info
同样要格式化字符串,您应该尝试函数。我会将信息重新写入:
info = "{country}: {key} is {val}".format(country=c_name.title(), key=key, val=val)
这使您的代码更可读,也更易于编写。返回值位于
if
中。你能想象一下,if
语句的计算结果为False
?嗨,Mad,谢谢你的帮助。因此,使用if的函数工作正常,如果出现错误语句,我还没有实现。我的问题在第一个函数(general_info)中,即使用for循环的函数。谢谢!顺便说一下,格式化的字符串缺少一个括号。无论如何,这真的很有帮助。再次感谢<代码>信息=(“{country}:{key}是{val}”。格式(c_name.title(),key,val))谢谢,现在更正它。你还想投票支持我的答案吗?