Re: [Python] Riordinare un dizionario

2017-04-24 Per discussione Marcello
Innanzi tutto grazie a tutti per l'aiuto.


Il giorno 24 aprile 2017 19:25, Marco Santamaria  ha scritto:

>
> da quello che scrivi sembra che tu voglia ordinare una lista di dizionari.
> Infatti, come ti hanno già detto diz è una lista di dizionari.
>
>
grazie al tuo link, ho risolto così:

from operator import itemgetter
diz = [{'add': '10', 'name': 'ccc', 'pwd': '12'}, {'add': '11', 'name':
'aaa', 'pwd': '45'}, {'add': '12', 'name': 'bbb', 'pwd': '79'}]
diz = sorted(diz, key=itemgetter('name'))
print (diz)

[{'add': '11', 'name': 'aaa', 'pwd': '45'}, {'add': '12', 'name': 'bbb',
'pwd': '79'}, {'add': '10', 'name': 'ccc', 'pwd': '12'}]


Saluti

Marcello
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Riordinare un dizionario

2017-04-24 Per discussione Marco Santamaria
Il giorno 24 aprile 2017 17:51, Marcello  ha scritto:

> Ciao a tutti,
>
> devo ordinare un dizionario in base al nome.
> Ho provato, cercando sul web, OrderedDict dovrebbe essere quello che fa al
> caso mio.
>
> import collections
> diz = [{'add': '10', 'name': 'ccc', 'pwd': '12'}, {'add': '11', 'name':
> 'aaa', 'pwd': '45'}, {'add': '12', 'name': 'bbb', 'pwd': '79'}]
> print (collections.OrderedDict(sorted(diz.items(), key=lambda t: t[1])))
>

Ciao Marcello,

da quello che scrivi sembra che tu voglia ordinare una lista di dizionari.
Infatti, come ti hanno già detto diz è una lista di dizionari.

Se è cosi OrderedDict non è quello che ti serve.

Vedi qui

per risolvere usando la keyword "sorted".

Marco

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Riordinare un dizionario

2017-04-24 Per discussione Giovanni Porcari

> Il giorno 24 apr 2017, alle ore 17:51, Marcello  ha 
> scritto:
> 
> Ciao a tutti,
> 
> devo ordinare un dizionario in base al nome.
> Ho provato, cercando sul web, OrderedDict dovrebbe essere quello che fa al 
> caso mio.
> 
> import collections
> diz = [{'add': '10', 'name': 'ccc', 'pwd': '12'}, {'add': '11', 'name': 
> 'aaa', 'pwd': '45'}, {'add': '12', 'name': 'bbb', 'pwd': '79'}]
> print (collections.OrderedDict(sorted(diz.items(), key=lambda t: t[1])))
> 
> ma mi viene restituito un errore 
> AttributeError: 'list' object has no attribute 'items'
> 
> E' come se diz venisse visto come lista e non come dizionario.
> Dove sbaglio?






La cosa più simile a quello che stai facendo e che potrebbe funzionare è :

import collections
diz = [{'add': '10', 'name': 'ccc', 'pwd': '12'}, {'add': '11', 'name': 'aaa', 
'pwd': '45'}, {'add': '12', 'name': 'bbb', 'pwd': '79'}]

print collections.OrderedDict([(d['name'],d) for d in sorted(diz, key=lambda t: 
t['name'])])

Ovvero ti costruisce un OrderdDict in cui la chiave è il 'name' e iol valore è 
il dizionario originale.
Quindi trasformi la lista di dizionari in un OrderedDict  ordinato in base alla 
elemento  'name' dei dizionari originali.


Se non ho capito nulla… abbi pazienza. Ci ho provato ;)


G
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Riordinare un dizionario

2017-04-24 Per discussione Gollum1
Il 24 aprile 2017 17:51, Marcello  ha scritto:
> Ciao a tutti,
>
> devo ordinare un dizionario in base al nome.
> Ho provato, cercando sul web, OrderedDict dovrebbe essere quello che fa al
> caso mio.
>
> import collections
> diz = [{'add': '10', 'name': 'ccc', 'pwd': '12'}, {'add': '11', 'name':
> 'aaa', 'pwd': '45'}, {'add': '12', 'name': 'bbb', 'pwd': '79'}]
> print (collections.OrderedDict(sorted(diz.items(), key=lambda t: t[1])))
>
> ma mi viene restituito un errore
> AttributeError: 'list' object has no attribute 'items'
>
> E' come se diz venisse visto come lista e non come dizionario.
> Dove sbaglio?

Tu non stai passando un dizionario a orderedDict, ma una lista di dizionari.

-- 
Gollum1 - http://www.gollumone.it
Tesoro, dov'é il mio teoro...
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Riordinare un dizionario

2017-04-24 Per discussione Paolo Di Ieso

Il 24/04/2017 17:51, Marcello ha scritto:

devo ordinare un dizionario in base al nome.
Ho provato, cercando sul web, OrderedDict dovrebbe essere quello che 
fa al caso mio.


Non sono sicuro di aver capito come vuoi il dizionario finale ordinato: 
un esempio?


Paolo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Riordinare un dizionario

2017-04-24 Per discussione Valentina Duca
prova a non mettere le quadre quando inizializzi diz.

Valentina
> Il giorno 24 apr 2017, alle ore 17:51, Marcello  ha 
> scritto:
> 
> Ciao a tutti,
> 
> devo ordinare un dizionario in base al nome.
> Ho provato, cercando sul web, OrderedDict dovrebbe essere quello che fa al 
> caso mio.
> 
> import collections
> diz = [{'add': '10', 'name': 'ccc', 'pwd': '12'}, {'add': '11', 'name': 
> 'aaa', 'pwd': '45'}, {'add': '12', 'name': 'bbb', 'pwd': '79'}]
> print (collections.OrderedDict(sorted(diz.items(), key=lambda t: t[1])))
> 
> ma mi viene restituito un errore 
> AttributeError: 'list' object has no attribute 'items'
> 
> E' come se diz venisse visto come lista e non come dizionario.
> Dove sbaglio?
> 
> Grazie 
> Marcello
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Riordinare un dizionario

2017-04-24 Per discussione Francesco Pischedda
Ciao,

Il giorno 24 aprile 2017 17:51, Marcello  ha scritto:

> Ciao a tutti,
>
> devo ordinare un dizionario in base al nome.
> Ho provato, cercando sul web, OrderedDict dovrebbe essere quello che fa al
> caso mio.
>
> import collections
> diz = [{'add': '10', 'name': 'ccc', 'pwd': '12'}, {'add': '11', 'name':
> 'aaa', 'pwd': '45'}, {'add': '12', 'name': 'bbb', 'pwd': '79'}]
> print (collections.OrderedDict(sorted(diz.items(), key=lambda t: t[1])))
>
> ma mi viene restituito un errore
> AttributeError: 'list' object has no attribute 'items'
>
> E' come se diz venisse visto come lista e non come dizionario.
>

diz in effetti è una lista con dentro n-dizionari :)

-- 
"Unix IS user friendly. It's just selective about who its friend are"

"Nevertheless I still think it’s a bad idea to make things harder for
ourselves if we can avoid it."

"C is quirky, flawed, and an enormous success."
   -- Dennis Ritchie

"Shipping is a feature. A really important feature. Your product must have
it."

"There is no such a thing as a temporary change or workaround: In most
cases, workarounds are tech debt."

"La gatta frettolosa ha fatto i gattini ciechi"
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] Riordinare un dizionario

2017-04-24 Per discussione Marcello
Ciao a tutti,

devo ordinare un dizionario in base al nome.
Ho provato, cercando sul web, OrderedDict dovrebbe essere quello che fa al
caso mio.

import collections
diz = [{'add': '10', 'name': 'ccc', 'pwd': '12'}, {'add': '11', 'name':
'aaa', 'pwd': '45'}, {'add': '12', 'name': 'bbb', 'pwd': '79'}]
print (collections.OrderedDict(sorted(diz.items(), key=lambda t: t[1])))

ma mi viene restituito un errore
AttributeError: 'list' object has no attribute 'items'

E' come se diz venisse visto come lista e non come dizionario.
Dove sbaglio?

Grazie
Marcello
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python