我只使用python工作了几个月, 很抱歉,如果我问一个愚蠢的问题。我有 使用变量调用字典名称的问题。
问题是,如果我使用变量来调用字典& []运营商, python解释我的代码试图返回字符串中的单个字符 而不是字典列表中的任何内容。
举一个例子来说明......让我说我 有一个如下的字典列表。
USA={'Capital':'Washington',
'Currency':'USD'}
Japan={'Capital':'Tokyo',
'Currency':'JPY'}
China={'Capital':'Beijing',
'Currency':'RMB'}
country=input("Enter USA or JAPAN or China? ")
print(USA["Capital"]+USA["Currency"]) #No problem -> WashingtonUSD
print(Japan["Capital"]+Japan["Currency"]) #No problem -> TokyoJPY
print(China["Capital"]+China["Currency"]) #No problem -> BeijingRMB
print(country["Capital"]+country["Currency"]) #Error -> TypeError: string indices must be integers
在上面的例子中,我理解了解释器 期待一个整数,因为它会查看该值 “country”作为字符串而不是字典...... 就像我把国家[2]用日本作为输入(例如), 它将返回字符“p”。但很明显 不是我的意图。
我有办法解决这个问题吗?
答案 0 :(得分:2)
您应该将自己的国家/地区自己放入字典中,其中键是国家/地区名称。然后你就可以做COUNTRIES[country]["Capital"]
等等。
示例:
COUNTRIES = dict(
USA={'Capital':'Washington',
'Currency':'USD'},
Japan={'Capital':'Tokyo',
'Currency':'JPY'},
...
)
country = input("Enter USA or Japan or China? ")
print(COUNTRIES[country]["Capital"])
答案 1 :(得分:1)
免责声明:除了我要展示的方式之外,任何其他方式都可以绝对。这种方式可行,但不是pythonic 。我提供它用于娱乐目的,并表明Python很酷。
USA={'Capital':'Washington',
'Currency':'USD'}
Japan={'Capital':'Tokyo',
'Currency':'JPY'}
China={'Capital':'Beijing',
'Currency':'RMB'}
country=input("Enter USA or Japan or China? ")
print(USA["Capital"]+USA["Currency"]) #No problem -> WashingtonUSD
print(Japan["Capital"]+Japan["Currency"]) #No problem -> TokyoJPY
print(China["Capital"]+China["Currency"]) #No problem -> BeijingRMB
# This works, but it is probably unwise to use it.
print(vars()[country]["Capital"] + vars()[country]['Currency'])
这是有效的,因为内置函数vars
在没有参数的情况下返回当前命名空间中变量(和其他东西)的字典。每个变量名称,作为字符串,成为字典中的一个键。
但@ tom的建议实际上要好得多。