2016-06-23 11 views
0

dict [ "Nord-West"] = (Süd + width_NS, West)Der Versuch, Werte Schlüssel im Wörterbuch zuweisen gibt Typ Fehler

Typeerror: 'Typ' Objekt nicht Gegenstand Zuordnung

class Building: 
    def __init__(self, south, west, width_WE, width_NS, height=10): 
unterstützt
 keys=("north-west","north-east","south-west","south-east") 
     dict.fromkeys(keys) 
     dict['north-west']=(south+width_NS,west) 
     dict["north-east"]=(south+width_NS,west+width_WE) 
     dict["south-west"]=(south,west) 
     dict["south-east"]=(south,west+width_WE) 
    self.corners=dict 
+0

Ich stelle fest, würde das mit 'fromkeys' so, wenn du gehst, um jeden Wert setzen danach sowieso völlig notwendig ist. Sie könnten 'dict.fromkeys (keys)' durch 'dict = {}' ersetzen und Ihr Code würde funktionieren (obwohl 'dict' als Variablenname schlecht ist). – Blckknght

Antwort

1

Sie haben das erstellte Wörterbuch zuweisen:

d = dict.fromkeys(keys) 

Dies ergibt:

>>> d = dict.fromkeys(keys) 
>>> d 
{'south-west': None, 'south-east': None, 'north-east': None, 'north-west': None} 
>>> d['north-west'] = (south+width_NS,west) 
{'south-west': None, 'south-east': None, 'north-east': None, 'north-west': (6, 8)} 

(Früher habe ich einige zufällige Werte für south, width_NS und west)

+0

Ich habe es. Ich habe 'dict' als variablen Namen verwendet, während ich das eindeutig nicht tun sollte, da es bereits eine Art Funktion ist. –

+0

@Newbie_programmer Sie können 'dict' als Name für eine Variable verwenden (in unserem Beispiel' d'), aber mischen Sie die Variable nicht mit dem Typ ['dict'] (https://docs.python.org /2/library/stdtypes.html#dict) – 3kt

0

Verwenden Sie eine andere Variablennamen, sagen wir, dict1. Hier ist der richtige Code:

class Building: 
    def __init__(self, south, west, width_WE, width_NS, height=10): 
     keys=("north-west","north-east","south-west","south-east") 
     dict1 = dict.fromkeys(keys) 
     dict1['north-west']=(south+width_NS,west) 
     dict1["north-east"]=(south+width_NS,west+width_WE) 
     dict1["south-west"]=(south,west) 
     dict1["south-east"]=(south,west+width_WE) 
     self.corners=dict1 
Verwandte Themen