Si può facilmente determinare se i due dicts
sono equivalenti:
dict(facecolor='white', edgecolor='None', alpha=0.65) == \
{"facecolor": "white", "edgecolor": "None", "alpha":0.65}
Questo è True
.
Tuttavia, se si digita questi letterali in un interprete Python, il dizionario risultante repr
s ha i valori in ordini diversi.
{'alpha': 0.65000000000000002, 'facecolor': 'white', 'edgecolor': 'None'}
{'edgecolor': 'None', 'facecolor': 'white', 'alpha': 0.65000000000000002}
Questo può variare in base alla versione di Python si usa, e credo che nelle versioni più recenti di Python varia da corsa per l'esecuzione dell'interprete; il seeding di hash è randomizzato per evitare che i dizionari vengano costruiti con prestazioni malevole. L'output sopra è da Python 2.6.6 (Win32).
Python dict
s non ordinate, con cui intendiamo che non è possibile fare affidamento sull'ordine. Tuttavia, durante l'iterazione su un dizionario, gli elementi devono essere resi disponibili nell'ordine dell'ordine. Questo ordine è influenzato dall'ordine in cui gli articoli sono inseriti e, sebbene non sia ovvio, sono inseriti in due ordini diversi in questi due dizionari: il costruttore dict()
ottiene un dizionario di parole chiave, che poi inserisce nel costruito dict
, quindi gli elementi del primo dict
vengono inseriti due volte! Per prima cosa nell'ordine in cui le specifichi, quindi in qualsiasi ordine finiscano nel dizionario costruito in quel passo.
Ipotesi:. C'è qualcosa in matplotlib
(o la versione di Python che si sta utilizzando) che si prende cura quale ordine gli elementi del dizionario escono in Infatti, dal momento che il secondo ha prima la sua chiave edgecolor
, forse è saltare la prima valore, o forse uno dei valori successivi ha un effetto collaterale che lo induce a sovrascrivere edgecolor
(ad esempio, forse facecolor
imposta anche edgecolor
per assicurarsi che non vi siano spazi tra i volti). Questo potrebbe ragionevolmente essere definito un bug poiché il comportamento può variare in base all'ordine in cui le parole chiave vengono fuori dal dizionario.
Questo è davvero strano ... In realtà posso riprodurre questo ... – mgilson
Il diavolo è davvero nei dettagli ... – BioGeek
Ho il forte sospetto che questo sia correlato al 'alfa'. La gestione dei colori rgb vs rgba è delicata. Quale versione di mpl stai usando? – tacaswell