使用变量调用字典中的键?
Calling a Key in a dictionary using a variable?
我正在尝试能够 return 基于用户定义的变量的特定词典的预算数字。我自己没有运气解决这个问题,非常感谢任何帮助。
owners = ['rob','andre']
team_balance = {}
for name in owners:
team_balance[name.capitalize()] ={'budget':200}
x='Rob' # x will be user defined using input()
print(team_balance[{x}]['budget'])
尝试以上操作会导致以下错误:
TypeError: unhashable type: 'set'
你只需要像这样省略花括号:
print(team_balance[x]['budget'])
如果你加上它们,结果是一个集合,你可以这样检查:
isinstance({x}, set)
集合不能用作字典键,因为它是不可散列的(这几乎意味着它可以更改)。
问题来自最后一行的“{}”。
当您定义字典时,您使用字符串作为键。
所以当你从字典中调用一个值时,你必须使用字符串。
x='Rob'
也在x
中赋值一个字符串,这样好不好。
我们可以使用函数 type
来检查对象的 class :
>>> type(x)
<class 'str'>
最后一行有什么问题是 {x}
将您的字符串转换为一组字符串。集合就像一个列表,但无序、不可更改且只有唯一值。
>>> type({x})
<class 'set'>
因此,由于您使用的对象类型与您用来设置值的对象类型不同,因此无法正常工作。
你得到的错误信息TypeError: unhashable type: 'set'
是因为一个集合对象是不可用的,所以它不能用作字典键(它解释了为什么here)。但是,即使集合是一个可用对象,您也不会有您想要的值,因为它不等于您用来定义键的值。
只需删除 {}
:
owners = ['rob','andre']
team_balance = {}
for name in owners:
team_balance[name.capitalize()] ={'budget':200}
x='Rob' # x will be user defined using input()
print(team_balance[x]['budget'])
>>> 200
owners = ['rob','andre']
team_balance = {}
for name in owners:
team_balance[name.capitalize()] ={'budget':200}
x=input() # user will enter this value
使用try except来处理异常
try:
print(team_balance[x.capitalize()]['budget'])
except:
print("Entered value not in owners list ")
我正在尝试能够 return 基于用户定义的变量的特定词典的预算数字。我自己没有运气解决这个问题,非常感谢任何帮助。
owners = ['rob','andre']
team_balance = {}
for name in owners:
team_balance[name.capitalize()] ={'budget':200}
x='Rob' # x will be user defined using input()
print(team_balance[{x}]['budget'])
尝试以上操作会导致以下错误:
TypeError: unhashable type: 'set'
你只需要像这样省略花括号:
print(team_balance[x]['budget'])
如果你加上它们,结果是一个集合,你可以这样检查:
isinstance({x}, set)
集合不能用作字典键,因为它是不可散列的(这几乎意味着它可以更改)。
问题来自最后一行的“{}”。
当您定义字典时,您使用字符串作为键。 所以当你从字典中调用一个值时,你必须使用字符串。
x='Rob'
也在x
中赋值一个字符串,这样好不好。
我们可以使用函数 type
来检查对象的 class :
>>> type(x)
<class 'str'>
最后一行有什么问题是 {x}
将您的字符串转换为一组字符串。集合就像一个列表,但无序、不可更改且只有唯一值。
>>> type({x})
<class 'set'>
因此,由于您使用的对象类型与您用来设置值的对象类型不同,因此无法正常工作。
你得到的错误信息TypeError: unhashable type: 'set'
是因为一个集合对象是不可用的,所以它不能用作字典键(它解释了为什么here)。但是,即使集合是一个可用对象,您也不会有您想要的值,因为它不等于您用来定义键的值。
只需删除 {}
:
owners = ['rob','andre']
team_balance = {}
for name in owners:
team_balance[name.capitalize()] ={'budget':200}
x='Rob' # x will be user defined using input()
print(team_balance[x]['budget'])
>>> 200
owners = ['rob','andre']
team_balance = {}
for name in owners:
team_balance[name.capitalize()] ={'budget':200}
x=input() # user will enter this value
使用try except来处理异常
try:
print(team_balance[x.capitalize()]['budget'])
except:
print("Entered value not in owners list ")