Warum kann ich das Folgende nicht tun:

a = (1,2,3)
dict[a] = 'hi'

TypeError: 'type' object does not support item assignment
0
user3062488 3 Dez. 2013 im 21:21

3 Antworten

Beste Antwort

Es kann sein. Das Problem ist, dass Sie versuchen, auf ein Element vom Typ dict selbst zuzugreifen.

>>> a = (1,2,3)
>>> d = {}
>>> d[a] = "hi"
>>> d
{(1, 2, 3): 'hi'}

Wie @mgilson es in einem Kommentar formulierte: "Tupel können gehasht werden, solange alle ihre Elemente gehasht werden können."

(Beachten Sie, dass Sie niemals Ihre Wörterbücher dict oder Listen list usw. benennen sollten. Dies schattiert den eingebauten Namen und ist häufig praktisch, z. B. dict(zip(keys, values)). )

7
DSM 3 Dez. 2013 im 17:27

Sie können ein Tupel als Schlüssel verwenden (solange alle Elemente hashbar sind):

>>> a = (1,2,3)
>>> b = {a:'hi'}
>>> b[(1,2,3)]
'hi'
>>>

Ihr Problem ist, dass Sie versuchen, die integrierte Funktion {{X0 }}:

>>> dict
<type 'dict'>
>>>
5
3 Dez. 2013 im 17:29

dict ist ein Typ. Sie möchten eine Instanz dieses Typs erstellen.

d = {}
a = (1, 2, 3)
d[a] = 'hi'
2
user2357112 supports Monica 3 Dez. 2013 im 17:22