Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python使用变量调用字典时出现问题_Python_String_Dictionary - Fatal编程技术网

使用Python使用变量调用字典时出现问题

使用Python使用变量调用字典时出现问题,python,string,dictionary,Python,String,Dictionary,我只在python上工作了几个月, 对不起,如果我问了一个愚蠢的问题。我有 使用变量调用字典名称时出现问题 问题是,如果我使用变量调用字典&[]运算符, python解释我试图返回字符串中单个字符的代码 而不是字典列表中的任何内容 用一个例子来说明。。。假设我 有一个如下的字典列表 在上面的例子中,我理解解释器 应为整数,因为它查看该值 将“国家”作为字符串而不是字典。。。 比如我把国家[2]用日本作为输入(例如), 它将返回字符“p”。但很明显 这不是我的意图 有什么办法可以解决这个问题吗

我只在python上工作了几个月, 对不起,如果我问了一个愚蠢的问题。我有 使用变量调用字典名称时出现问题

问题是,如果我使用变量调用字典&[]运算符, python解释我试图返回字符串中单个字符的代码 而不是字典列表中的任何内容

用一个例子来说明。。。假设我 有一个如下的字典列表



在上面的例子中,我理解解释器 应为整数,因为它查看该值 将“国家”作为字符串而不是字典。。。 比如我把国家[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'])