使用Python使用变量调用字典时出现问题
我只在python上工作了几个月, 对不起,如果我问了一个愚蠢的问题。我有 使用变量调用字典名称时出现问题 问题是,如果我使用变量调用字典&[]运算符, python解释我试图返回字符串中单个字符的代码 而不是字典列表中的任何内容 用一个例子来说明。。。假设我 有一个如下的字典列表使用Python使用变量调用字典时出现问题,python,string,dictionary,Python,String,Dictionary,我只在python上工作了几个月, 对不起,如果我问了一个愚蠢的问题。我有 使用变量调用字典名称时出现问题 问题是,如果我使用变量调用字典&[]运算符, python解释我试图返回字符串中单个字符的代码 而不是字典列表中的任何内容 用一个例子来说明。。。假设我 有一个如下的字典列表 在上面的例子中,我理解解释器 应为整数,因为它查看该值 将“国家”作为字符串而不是字典。。。 比如我把国家[2]用日本作为输入(例如), 它将返回字符“p”。但很明显 这不是我的意图 有什么办法可以解决这个问题吗
在上面的例子中,我理解解释器 应为整数,因为它查看该值 将“国家”作为字符串而不是字典。。。 比如我把国家[2]用日本作为输入(例如), 它将返回字符“p”。但很明显 这不是我的意图
有什么办法可以解决这个问题吗?你应该把你的国家自己编入字典,关键是国家名称。然后你就可以做
国家[国家][“资本”]
,等等
例如:
COUNTRIES = dict(
USA={'Capital':'Washington',
'Currency':'USD'},
Japan={'Capital':'Tokyo',
'Currency':'JPY'},
...
)
country = input("Enter USA or Japan or China? ")
print(COUNTRIES[country]["Capital"])
免责声明:任何其他方式都肯定比我即将展示的方式要好。这种方法会起作用,但它不是肾盂。我提供它是为了娱乐目的,也是为了证明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
在没有参数的情况下返回当前名称空间中的变量(和其他内容)的dict。每个变量名作为一个字符串,成为dict中的一个键
但是@tom的建议实际上要好得多。非常感谢你,tom,这很有帮助!!如果没有你的帮助,我不会考虑用另一本字典来包装最初的字典。再次感谢!嗨,科迪,也感谢你提供了一个例子。我也尝试过你的方法,它也提供了预期的结果。。。我不知道您可以使用内置的vars()函数提供一个“类似黑客”的方法。我认为,如果使用得当,这种方法在特定情况下可能有用。
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'])