Quiero crear un diccionario cuyos valores sean listas. Por ejemplo:Python creando un diccionario de listas
{
1: ['1'],
2: ['1','2'],
3: ['2']
}
Si hago:
d = dict()
a = ['1', '2']
for i in a:
for j in range(int(i), int(i) + 2):
d[j].append(i)
me siento un KeyError, porque d [...] no es una lista. En este caso, puedo agregar el siguiente código después de la asignación de a para inicializar el diccionario.
for x in range(1, 4):
d[x] = list()
¿Hay una manera mejor de hacer esto? Digamos que no sé las claves que voy a necesitar hasta que esté en el segundo ciclo for
. Por ejemplo:
class relation:
scope_list = list()
...
d = dict()
for relation in relation_list:
for scope_item in relation.scope_list:
d[scope_item].append(relation)
Una alternativa sería entonces reemplazando
d[scope_item].append(relation)
con
if d.has_key(scope_item):
d[scope_item].append(relation)
else:
d[scope_item] = [relation,]
¿Cuál es la mejor manera de manejar esto? Idealmente, agregar "simplemente funcionaría". ¿Hay alguna forma de expresar que quiero un diccionario de listas vacías, incluso si no conozco todas las claves cuando primero creo la lista?
Otros diccionarios bajo el módulo 'collections' también funcionan de esta manera, por ejemplo' collections.OrderedDict'. – txsaw1
Oh. Esto es genial. Y no tiene que inicializar a '= []'. ¡Buen material! –