Tengo esta clase de diccionario

class my_key_value(dict): 
    def __init__(self): 
        self = dict() 
    def add(self, key, value): 
        self[key] = value 

Puedo agregar elementos como

my_dict = my_key_value()
my_dict.add("hello", 0)

Me gustaría incrementar el valor de las claves en función de algunas condiciones. Supongamos que fp es un controlador de archivos, entonces

for line in fp:
    if word in line:
        my_dict.inc(word) 

Debe incrementar el valor de word. La siguiente definición de función es incorrecta

def inc(self, key):
    self[key] = value+1

¿Puedo saber cómo arreglar eso?

1
mahmood 28 dic. 2019 a las 07:20

2 respuestas

La mejor respuesta

No define value. Configúrelo en self[key]:

def inc(self, key):
    value = self[key]
    self[key] = value+1
2
Anonymous 28 dic. 2019 a las 04:26

Nunca estableces value, por lo que value + 1 no tiene sentido.

Puede usar el operador incorporado +=.

def inc(self, key):
    self[key] += 1
3
Barmar 28 dic. 2019 a las 04:26