如何在python中将变量设置为字典?

时间:2014-02-25 00:57:42

标签: python variables dictionary

这是一本字典(你不需要理解它所说的回答问题):

  

Long_Swordsmenc = {'as':4,'ar':5,'de':2,'co':2,'asr':7,'他':10,'wm':1,'am am ':1}

接下来,我要求用户选择一个单位:

  

x1 = raw_input('玩家1,输入您的单位:')

然后,当用户输入'Long_Swordsmenc'时,x1将等于'Long_Swordsmenc'。 当我输入:

  

打印x1

我希望弹出这个:

  

{'as':4,'ar':5,'de':2,'co':2,'asr':7,'他':10,'wm':1,'am': 1}

3 个答案:

答案 0 :(得分:3)

您可能需要字典词典,而不是仅存储变量Long_Swordsmenc。所以:

weapons = {}
weapons['Long_Swordsmenc'] = {'as': 4, 'ar': 5, 'de': 2, 'co': 2, 'asr': 7, 'he': 10, 'wm': 1, 'am': 1}

x1=raw_input('Player 1, enter your unit: ')

然后:

>>> print weapons[x1]
{'as': 4, 'ar': 5, 'de': 2, 'co': 2, 'asr': 7, 'he': 10, 'wm': 1, 'am': 1}

您也可以访问globals(),但是更好的做法(也可能更安全),限制字典的键

答案 1 :(得分:2)

执行此操作的最佳方法是使用嵌套字典,其中'Long_Swordsmenc'是其中一个键。例如:

units = {'Long_Swordsmenc': {'as': 4, 'ar': 5, 'de': 2, 'co': 2,
                             'asr': 7, 'he': 10, 'wm': 1, 'am': 1}}
x1 = raw_input('Player 1, enter your unit: ')
print units[x1]

答案 2 :(得分:1)

注意:执行此操作的最佳方法是像其他答案建议的字典。但是,这是实际做你要求的。

如果您没有像其他答案建议的那样将Long_Swordsmenc变量放入字典中,则必须执行此操作:

import sys

module = sys.modules[__name__]

Long_Swordsmenc = {'as': 4, 'ar': 5, 'de': 2, 'co': 2, 'asr': 7, 'he': 10, 'wm': 1, 'am': 1}

x1 = raw_input('Player 1, enter your unit: ')
unit1 = getattr(module, x1)

print(unit1)

打印:

{'as': 4, 'ar': 5, 'de': 2, 'co': 2, 'asr': 7, 'he': 10, 'wm': 1, 'am': 1}

编辑:更简单的方法是使用globals()[x1],如@martineau和@mhlester建议。有关详细信息,请参阅以下评论。