<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Il 17/02/2016 23.00, Marco Giusti ha
scritto:<br>
</div>
<blockquote cite="mid:20160217220056.GA2212@murdoc" type="cite">
<pre wrap="">On Wed, Feb 17 2016, Dario Santomarco wrote:
</pre>
<blockquote type="cite">
<pre wrap="">Ciao, ci sono i seguenti errori:
Tua - kwargs = {1:"A", 2:"B", 3:"C"}
Corretta - kwargs = {'1':"A", '2':"B", '3':"C"} # le chiavi del
dizionario DEVONO essere stringhe
</pre>
</blockquote>
<pre wrap="">
Spiacente di contraddirti ma:
$ python
Python 2.7.9 (default, Mar 1 2015, 12:57:24)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> {1: "1"}[1]
'1'
>>> {(1,2): "una tupla"}
{(1, 2): 'una tupla'}
>>> {[1,2]: "una lista"}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> {object(): "un oggetto"}
{<object object at 0x7fd9eb1ed080>: 'un oggetto'}
>>>
come puoi vedere le chiavi di un dizionario possono essere tante cose,
e l'errore con la lista ti dà un indizio su cosa può e non può essere
una chiave di dizionario.
m.
_______________________________________________
Python mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Python@lists.python.it">Python@lists.python.it</a>
<a class="moz-txt-link-freetext" href="http://lists.python.it/mailman/listinfo/python">http://lists.python.it/mailman/listinfo/python</a>
</pre>
</blockquote>
<br>
Ciao, non mi riferivo ai dizionari in generale, ma solo a quelli
passati come **kwargs.<br>
**kwargs equivale ad una sequenza di keyword=valore, ciò comporta
che le chiavi possonano essere passate solo come stringa poiché
equivalgono alle etichette dei rispettivi valori, es:<br>
- def foo(1="A", 5="B") è un errore di sintassi così come lo è una
semplice assegnazione 1 = valore (1 è un letterale di tipo int,
pertanto non può essere un'etichetta)<br>
- def foo(A = 1, B=5) è corretto perché A e B possono essere
etichette.<br>
Per scrupolo lo avevo testato sulla mia installazione, uso la 3.4.4,
se non gli passo stringhe solleva una TypeError: __init__() keywords
must be strings.<br>
<br>
<div class="moz-signature">-- <br>
<title></title>
<style type="text/css">
.sendername {font-family: "arial", arial;
font-size: 16px;
font-style: italic;
font-weight: bold;
color: #333333;
}
.senderdetails {font-family: "arial", arial;
font-size: 12px;
color: #666666;
padding-left: 3px;
}
.boldtext {font-weight: bold;}
a:link {color: #666666;
text-decoration: none;}
a:visited {color: #666666;
text-decoration: none;</style><br>
<div class="sendername"> Dario Santomarco </div>
<br>
<br>
</div>
</body>
</html>