如何正确操作字典



我有这个字典:

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')

最新更新