我有这个字典:
self.rewards = {'D': -1,'0':100,'&':-100}
'D'
是标准奖励-1
的关键。
'0'
是良好奖励100
的关键。
'&'
是糟糕奖励-100
的关键。
现在我需要在一种模式中更改该奖励系统,其中好和坏奖励本身就是关键,例如:
self.rewards = {'D': -1, key : key}
#Example:
#next.tipo is 'D'
self.rewards[next.tipo] #is -1
#next.tipo is '10500'
self.rewards[next.tipo] #is 10500
#next.tipo is '-4500'
self.rewards[next.tipo] #is -4500
这可能吗?
我想的其他方式:
self.rewards = {'D': -1, else : key}
阅读上面:如果键是'D'
那么值是-1
,否则值是键本身。
为什么不构建一个函数:
def getRewards(val):
return -1 if val=='D' else val
In [195]: getRewards(100)
Out[195]: 100
In [196]: getRewards('D')
Out[196]: -1
您可以使用字典的get
方法:
reward = int(self.rewards.get(next.tipo, next.tipo))
是的。这是可能的。
>>> keys = ['hello','D']
>>> d = dict()
>>> for k in keys:
... if k == 'D':
... d[k] = -1
... else:
... d[k] = k
...
>>> d
{'hello': 'hello', 'D': -1}
使用字典理解:
self.rewards = {k: k for k, v in self.rewards.items()}
self.rewards['D'] = -1
您可以使用
以下内容
t ={v: v for k, v in self.rewards.items() if k is not 'D'}
t['D'] = self.rewards.get('D')