<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>