2017-08-30 1 views
2

Python 3.6Python: Wie in einem Wörterbuch

Wert zu einem vorhandenen Wert hinzufügen Hallo, ein Programm für die Bestandsverwaltung für die Schule schreiben, und ich kann nicht herausfinden, wie 1 in einem zu einer bestehenden Nummer hinzufügen Wörterbuch. Also habe ich die Menge eines Gegenstandes in einem Wörterbuch gespeichert und kann nicht herausfinden, wie man Python dazu bringt, 1 zur Quantitätsnummer hinzuzufügen. Code ist etwas wie unten gezeigt:

stock = {'Intel i7-7770T' : ['Intel i7-7770T', '$310', 'New','1101'], 
     'Intel i7-7770T QUAN' : [3]} 

Müsste ich eine Funktion definieren? Wenn ich also einen Intel i7-7770T verkaufe, sollte "Intel i7-7770T QUAN" 2 werden. Oder wenn ich mehr Aktien bekomme, sollte es 4 werden. Wie kann ich das erreichen? Jede Hilfe würde sehr geschätzt werden. Vielen Dank!

Auch das Hinzufügen erfolgt über eine Schaltfläche mit Tkinter und ich habe das herausgefunden. Wenn dies über eine Funktion geschieht, würde ich den Button einfach mit der Funktion verknüpfen.

+2

warum behalten Sie den Wert in einer 'liste'? Es wäre einfacher, es wäre nur eine ganze Zahl .. Wie auch immer: 'Stock ['Intel i7-7770T QUAN'] [0] - = 1' –

+1

bevor Sie in Betrieb auf Ihrem dict, würde ich vielleicht überdenken die Struktur der Wörterbuch? Scheint so, als könntest du dir das Leben ein bisschen erleichtern, indem du etwas über deine Schlüssel/Wert-Paare planst – RHSmith159

Antwort

0

In einer allgemeineren Methode als @Danil Speransky mit Ihrer aktuellen dict Struktur:

def sold(name, quant): 
    stock[name + " QUAN"][0] -= 1 

Ich würde die dict aswell restrukturieren und sogar eine Klasse betrachten definieren Objekte in der dict zu erstellen:

class store_item(object): 
    def __init__(self, price, condition, quantity, info1=None, info2=None): 
     self.price_usd = price 
     self.condition = condition 
     self.info1 = info1 
     self.info2 = info2 
     self.quant = quantity 

Dann könnten Sie ein Diktat mit den Objekten darin machen und auf sie auf eine nette Weise zugreifen (Sie könnten sogar Vererbung verwenden, um spezielle Klassen für verschiedene Arten von Produkten zu erstellen, z Beispielprozessoren).Beispiel für den Zugriff:

stock['Intel i7-7770T'].quant -= 1 
stock['Intel i7-7770T'].price_usd *= 0.95 

eine Klasse hat den Vorteil, dass Sie zusätzliche Initialisierung in das Objekt schreiben und erstellen Methoden bestimmte Aktionen auf dem Objekt zu tun. Zum Beispiel kann der Rabatt in einer anderen Weise, die den alten Wert behält, gemacht werden:

1

Try this:

stock['Intel i7-7770T QUAN'][0] += 1 
1

Ich würde die ganze dict umformatieren:

stock = { 
    'Intel i7-7770T': { 
     'price_USD': 310, 
     'condition': 'New', 
     'whatever': '1101', # should this really be a string, or is it always a number? 
     'quantity': 3 
    }, 
    ... 
} 

Dann können Sie Sachen wie stock['Intel i7-7770T']['quantity'] += 1

Andere Operationen tun sollten, als auch einfacher sein. 20 Prozent Rabatt:

stock['Intel i7-7770T']['price_USD'] *= 0.8 

ab Lager ganzen Artikel entfernen:

stock.pop('Intel i7-7770T') 
0

Es besteht keine Notwendigkeit für eine Liste. Speichern Sie die Menge einfach als einfachen Wert und verwenden Sie einfach den Wert. Ihre JSON würde wie folgt aussehen:

stock = {'Intel i7-7770T' : ['Intel i7-7770T', '$310', 'New','1101'], 
    'Intel i7-7770T QUAN' : 3} 

Und Sie diese Menge mit stock['Intel i7-7770T QUAN']

Verwenden Sie den Code in den ersten beiden Kommentaren versehen zugreifen können, um de-/erhöhen die Menge ohne [0].

Und ich würde empfehlen, die Struktur des Diktats zu ändern und ein Diktat für das Modell, den Preis usw. zu verwenden. Daher ist es einfacher und zuverlässiger, diese Attribute mit ihrem Schlüssel zu referenzieren und sich dann auf eine Liste zu verlassen und sie nach ihrem Index zu erhalten.

Verwandte Themen