2016-05-17 2 views
0

Ich habe dieses Programm, das ich geschrieben habe, und ich habe eine Liste verwendet, weil Sie leicht daran anhängen können. Mit einem Wörterbuch können Sie nicht daran anhängen. Ich frage mich, ob es eine Möglichkeit gibt, dieses Programm mit einem Wörterbuch anstatt einer Liste zu schreiben, und wenn ja, wie?Wie kann ich dieses Programm mit einem Wörterbuch anstelle einer Liste implementieren?

Ich möchte den Ausgang gleich bleiben. Es ist nur, wenn Sie store = [] in ein Wörterbuch wie store = {} ändern, wie ändere ich dann den Rest des Programms, wo ich nur bestimmte Variablen ändere, um von Liste zu Wörterbuch zu gehen?

def SSN(): 

    store = [] 

    for i in range(0, 100): 
     store.append([]) 
    i = 0 
    name = 'key' 
    while(name != ''): 
     name = input('Enter Name: ') 
     if(name == ''): 
      if(i<1): 
       break 
      j=0 
      while(j < i): 
       print(store[j][0] + ' has SSN ' + store[j][1]) 
       j = j+1 
      break 
     j=0 
     val = 0 
     while(j < i): 
      if(name == store[j][0]): 
       val = 1 
       break 
      j = j + 1 
     if(val == 1): 
      update = input(name + ' has SSN ' + store[j][1] + '. Update? ') 
      if(update == 'y'): 
       store[j][1] = input('Enter SSN: ') 
     else: 
      ssn = input('Enter SSN: ') 
      store[i].append(name) 
      store[i].append(ssn) 
      i = i+1 
SSN() 

Das läuft genau wie ich es will, aber es ist nur, dass Wörterbuch Ich mag würde. Danke!

Für die Ausgabe, ich habe dies:

Enter Name: john mike Wazowski mike mike has SSN 5678. Update? y john john has SSN 1234. Update? n Enter Name: john has SSN 1234 mike has SSN 6644 wazowski has SSN 0000

Wo die gestaffelt sind Worte darstellen, was die Benutzereingabe bei Aufforderung durch das Programm.

+0

Können Sie uns bitte ein Beispiel für Eingabe und gewünschte Ausgabe zeigen? Es wäre einfacher zu verstehen, was Sie genau fragen. – Cyb3rFly3r

+0

@ Cyb3rFly3r im Fragenkörper aktualisiert. Hoffentlich hilft das ein bisschen mehr. Das Ergebnis, ich möchte, dass das so bleibt. Wenn Sie 'store = []' in ein Wörterbuch als 'store = {}' ändern, wie ändere ich dann den Rest des Programms, in dem ich nur bestimmte Variablen ändere, um von Liste zu Wörterbuch zu wechseln? – adhamncheese

+0

Also, wäre es richtig zu sagen, dass Sie (Name, ssn) Paare in einem Wörterbuch speichern und in der Lage sein, die ssn zu aktualisieren, wenn der Name bereits existiert? – Cyb3rFly3r

Antwort

4

store zu einem dict machen ist eine gute Idee, es würde alle Loops loswerden, die Sie verwenden, um Elemente von ihm zu finden. Das geänderte Programm würde wie folgt aussehen:

def SSN(): 
    store = {} 
    while True: 
     name = input('Enter Name: ') 
     if not name: 
      for k, v in store.items(): 
       print(k + ' has SSN ' + v) 
      break 

     if name in store: 
      if input(name + ' has SSN ' + store[name] + '. Update? ') != 'y': 
       continue 

     store[name] = input('Enter SSN: ') 

In den obigen store.items() kehrt Schlüsselwertepaare aus dem dict wo Schlüssel und Wert ist SSN wird. name in store gibt den booleschen Wert zurück, der angibt, ob der Name in store ist und store[name] = input('Enter SSN: ') einen neuen Wert als Ersatz für den alten Wert zuweist, wenn dieser existiert.

+0

Große Antwort. Ich habe selbst daran gearbeitet und mir ist im Prinzip das Gleiche eingefallen. Der Hauptunterschied war, dass ich einen "try ... except KeyError ... else" -Block für den Teil über die Aktualisierung des SSN verwendet habe, aber ich mag deine Lösung viel besser (wahrscheinlich die beste Verwendung von 'continue', die ich je gesehen habe)). – pzp

+0

Gerade lief das und das ist perfekt! Ich danke dir sehr! Ich begann mit einem Wörterbuch und dann war es zu lang und kompliziert (immer noch Wörterbücher und Python lernen), also ging ich die Liste Route und dann sind wir hier! – adhamncheese

0

So möchten Sie Listen in Wörterbücher implent dann versuchen

List = [Pie] 

Dict = {Apple} 

for List in Dict: 
print(Dict) 
break 

Vielleicht ist das, was Sie suchen?

+0

Dies beantwortet die OP-Frage nicht im Geringsten. – pzp

+0

Tut mir leid, ich bin etwas unerfahren und ich versuche nur zu helfen :( – BradTheBrutalitist

+0

Es ist okay. Wir sind alle hier, um zu lernen. – adhamncheese

1

Wenn ich mir das richtig anschaue ... Es sieht so aus als würden Sie gerade eine Liste mit dem Namen 'store' erstellen und wenn Sie nicht mit Ihrem benutzerfreundlichen Layout drucken, drucken Sie nur die Liste, es wäre so etwas wie aussehen

[ 'john', 1234 'Mike', 6644 'Wazowski', 0000]

Aber stattdessen würden Sie lieber ein Wörterbuch haben, die eher wie

sieht {'John': 1234, 'Mike': 6644, 'Wazowski': 0000}

Ich stimme zu, dass ein Wörterbuch hier sinnvoller ist. Probieren Sie etwas wie

store = {} 
name = 'key' 
while name != '': 
    name = raw_input("Enter Name: ") 
    if name == '': 
     break 
    ssn = raw_input("Enter SSN: ") 
    store[name] = ssn 

Das einzige, was Sie in diesem Fall verlieren die Fähigkeit zu sehen, welcher Name zuerst eingegeben wurde, zweite usw. Aber das ist nicht so wichtig scheinen in der Lage, auf einfache Weise-ID, die Anzahl geht mit welchem ​​Namen.

Verwandte Themen