tuple print index for array python dictionary default-value

print - python list get



Python: list() como valor predeterminado para el diccionario (1)

El mejor método es utilizar collections.defaultdict con una list predeterminada:

from collections import defaultdict dct = defaultdict(list)

Luego solo usa:

dct[key].append(some_value)

y el diccionario creará una nueva lista para usted si la clave aún no está en la asignación. collections.defaultdict es una subclase de dict y, por lo demás, se comporta como un objeto dict normal.

Cuando se usa un dict estándar, dict.setdefault() establece dct[key] correctamente en tu valor predeterminado, por lo que la versión debería haber funcionado bien. Puedes encadenar esa llamada con .append() :

>>> dct = {} >>> dct.setdefault(''foo'', []).append(''bar'') # returns None! >>> dct {''foo'': [''bar'']}

Sin embargo, al utilizar dct[key] = dct.get(...).append() , reemplaza el valor de dct[key] con la salida de .append() , que es None .

Tengo el código de Python que se parece a:

if key in dict: dict[key].append(some_value) else: dict[key] = [some_value]

pero me imagino que debería haber algún método para sortear esta afirmación "si". Lo intenté

dict.setdefault(key, []) dict[key].append(some_value)

y

dict[key] = dict.get(key, []).append(some_value)

pero ambos se quejan de "TypeError: tipo inestable: ''lista''". ¿Alguna recomendación? ¡Gracias!