Ho appena appreso la comprensione delle liste, che è un ottimo modo veloce per ottenere dati in una singola riga di codice. Ma qualcosa mi sta infastidendo.Python list comprehension for dictionaries nei dizionari?
Nella mia prova ho questo tipo di dizionari all'interno della lista:
[{'y': 72, 'x': 94, 'fname': 'test1420'}, {'y': 72, 'x': 94, 'fname': 'test277'}]
La lista di comprensione s = [ r for r in list if r['x'] > 92 and r['x'] < 95 and r['y'] > 70 and r['y'] < 75 ]
funziona perfettamente su quella (è, infatti, il risultato di questa linea)
Comunque , Ho poi capito che non sto davvero usando una lista nel mio altro progetto, sto usando un dizionario. In questo modo:
{'test1420': {'y': '060', 'x': '070', 'fname': 'test1420'}}
In questo modo posso semplicemente modificare il mio dizionario con var['test1420'] = ...
Ma list comprehension non lavorare su questo! E non posso modificare gli elenchi in questo modo perché non è possibile assegnare un indice del genere.
C'è un altro modo?
La comprensione delle liste può essere interessante, ma non esagerare. Non esiste una regola costante contro le comprensioni giganti, ma per quello che vale, la Guida di stile Python di Google consiglia contro qualsiasi cosa eccessivamente complessa: http://google-styleguide.googlecode.com/svn/trunk/pyguide.html?showone=List_Comprehensions#List_Comprehensions –