2017-05-03 2 views
-4

Ich möchte eine App für meine Arbeit machen, damit ich Notizen von Paketen mache ich an meine Kunden so habe ich ein Wörterbuch mit meiner Kundenliste und ihre Codenummern was ich möchte meine App zu tun ist zu importieren mehrere Codenummern vergleichen sie mit den Schlüsseln in meinem Wörterbuch und holen die Einzelteile zurück .... weil die Codenummern nicht ganze Zahlen sein können, muss ich sie als Schnur manipulieren, sie mit einem Generator zusammenstoßen und die Resultate zurückGenerator Ergebnisse

farmcod = { "0039":"ΑΤΣΑΛΗ Μ.","0056":"ΒΑΡΔΙΑΜΠΑΣΗΣ Κ.", 
"0138":"ΒΟΥΜΒΟΥΡΑΚΗ Α.","0047":"ΓΕΩΡΓΟΥΛΑΚΗ Κ.","0087":"ΓΟΥΜΕΝΑΚH 
Κ.","0035":"ΓΥΠΑΡΗ Ε.",} 

def chunker(seq, size): 
return [seq[pos:pos + size] for pos in range(0, len(seq), size)] 

kodfain = input ('pharmacy key : ') 

for group in chunker(kodfain, 4): 

print (group,",",sep="",end='') 
erhalten

so, wenn ich Eingang 006900780054 i bekommen ===> 0069,0078,0054,

meine Frage ist, wie ic Vergleichen Sie diese 3 Generator-Ergebnisse mit den Schlüsseln des Wörterbuchs und erhalten Sie die Artikel zurück?

+3

Einrückung ist wichtig in Python. Können Sie Ihren Code richtig einrücken? – Ben

+2

Wo ist der Generator? Ich sehe keine. –

Antwort

0
farmcod = {"0039": "ΑΤΣΑΛΗ Μ.", "0056": "ΒΑΡΔΙΑΜΠΑΣΗΣ Κ.", "0138": "ΒΟΥΜΒΟΥΡΑΚΗ Α.", 
      "0047": "ΓΕΩΡΓΟΥΛΑΚΗ Κ.", "0087": "ΓΟΥΜΕΝΑΚH Κ.", "0035": "ΓΥΠΑΡΗ Ε.", } 


# this returns a list, not a generator. Shouldn't matter unless your dataset is huge 
def chunker(seq, size): 
    return [seq[pos:pos + size] for pos in range(0, len(seq), size)] 

kodfain = "006900780054" 

for group in chunker(kodfain, 4): 
    code = farmcod.get(group, None) 
    if code: 
     # do something with the code 
     print(code) 
    else: 
     # it wasn't found 
     print('code not found for', group) 

Einige Anmerkungen:

  • Wenn die Geschwindigkeit wichtig ist und Sie erwarten, dass die meisten Ihrer Gruppen in farmcod sein, Sie könnten einen try-catch Block anstelle des if-else Block verwenden möchten. Es könnte schneller sein.
  • Ihre chunker Funktion gibt eine Liste zurück, keinen Generator. Wenn Ihr Datensatz klein ist, ist das in Ordnung. Wenn nicht, forschen Generatorfunktionen.
+0

Sie können es komplett überspringen und tun 'code = farmcod.get (Gruppe, 'Code nicht gefunden für {}'. Format (Code))' und dann ausdrucken. –

+0

@ Ev.Kounis Sie könnten, wenn alles, was Sie tun möchten, ist es zu drucken, aber wenn Sie einen Benutzer für den Code oder einige Fehlerbehandlung (und ich bin mir sicher, dass er etwas Besonderes in dem Fehler tun wollen) Fall), müssen Sie das 'if-else' trotzdem wieder einführen. – Ben

+0

@NikolaosGasparis Das ist eine andere Frage. Aber es sieht so aus, als wolltest du eine 'while'-Schleife. Google 'Input-Loop-Python' und mangle, was Sie finden, bis es tut, was Sie wollen :). – Ben