Frage

Ich würde auf einem Wörterbuch zu Iterierte mag, das Wörterbuch jedes Mal zur Änderung eher als das, was zur Zeit geschieht, die den alten Wert mit dem neuen wird zurückgesetzt wird.

Mein aktueller Code ist:

while True:
    grades = { raw_input('Please enter the module ID: '):raw_input('Please enter the grade for the module: ') }

aber leider geht diese Liste nicht ändern, sondern entfernt vielmehr die vorherigen Werte. Wie würde ich mich über das Wörterbuch zur Änderung?

(Auch wenn ich diese laufen, es will, dass ich den Wert vor dem Schlüssel zum Eingang, warum dies geschehen?)

War es hilfreich?

Lösung

In Ihrem Beispiel-Typen (Wörterbuch) wird jedes Mal mit einem neuen Schlüssel, Wert-Paar aufgefrischt zu werden.

>>> grades = { 'k':'x'}
>>> grades
{'k': 'x'}
>>> grades = { 'newinput':'newval'}
>>> grades
{'newinput': 'newval'}
>>> 

Was Sie haben sollte tun, ist Aktualisierung der Schlüssel, Wert-Paar für die gleiche dict:

>>> grades = {}
>>> grades['k'] = 'x'
>>> grades['newinput'] = 'newval'
>>> grades
{'k': 'x', 'newinput': 'newval'}
>>> 

Versuchen Sie, diese :

>>> grades = {}
>>> while True:
...     k = raw_input('Please enter the module ID: ')
...     val = raw_input('Please enter the grade for the module: ')
...     grades[k] = val
... 
Please enter the module ID: x
Please enter the grade for the module: 222
Please enter the module ID: y
Please enter the grade for the module: 234
Please enter the module ID: z
Please enter the grade for the module: 456
Please enter the module ID: 
Please enter the grade for the module: 
Please enter the module ID: Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
KeyboardInterrupt
>>> 
>>> grades
{'y': '234', 'x': '222', 'z': '456', '': ''}
>>> 

Andere Tipps

grades = {}
while True:
  module = raw_input(...)
  grade = raw_input(...)

  if not grades[module]:
    grades[module] = []

  grades[module].append(grade)

Wenn Sie mit Python 2.5 +:

import collections

grades = collections.defaultdict(list)
while True:
  grades[raw_input('enter module')].append(raw_input('enter grade'))

Sie sind Neuzuweisung (sprich: zu ersetzen). grades auf jeder Iteration der Schleife

Sie müssen neue Schlüssel des Wörterbuchs tatsächlich eingestellt:

grades = {}
while True: // some end condition would be great
    id = raw_input('Please enter the module ID: ')
    grade = raw_input('Please enter the grade for the module: ')

    // set the key id to the value of grade
    grades[id] = grade
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top