如何正确操纵字典?

时间:2016-06-02 09:30:10

标签: python python-2.7

我有这本词典:

self.rewards = {'D': -1,'0':100,'&':-100}

'D'是标准奖励的关键-1

'0'是获得良好回报的关键100

'&'是奖励不良的关键-100

现在我需要在GOOD和BAD奖励是关键的模式下更改奖励系统,例如:

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,ELSE值为密钥本身。

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

是。这是可能的。

>>> keys = ['hello','D']
>>> d = dict()
>>> for k in keys:
...     if k == 'D':
...             d[k] = -1
...     else:
...             d[k] = k
... 
>>> d
{'hello': 'hello', 'D': -1}

答案 2 :(得分:0)

用词汇理解:

 self.rewards = {k: k for k, v in self.rewards.items()}
 self.rewards['D'] = -1   

答案 3 :(得分:0)

您可以使用get - dicts方法:

reward = int(self.rewards.get(next.tipo, next.tipo))

答案 4 :(得分:0)

您可以使用以下

t ={v: v for k, v in self.rewards.items() if k is not 'D'}
t['D'] = self.rewards.get('D')