2017-03-17 8 views
0

Ich erhalte eine Fehlermeldung, wenn ich versuche, den Temperaturwert zu ziehen. Der Fehler ist: Typeerror: String-Indizes müssen ganze Zahlen seinZiehen Sie einen Wert aus einem Wörterbuch

Dies ist mein Code:

for item in data['main']: 
    tempday=item['temp'] 

Dies ist die API ich bin ziehen:

{ 
"coord": {}, 
"weather": [], 
"base": "stations", 
"main": { 
    "temp": 53.2, 
    "pressure": 1021, 
    "humidity": 71, 
    "temp_min": 44.6, 
    "temp_max": 57.2 
}, 
"visibility": 16093, 
} 

ich die „temp erhalten möchten "Wert von 53,2. Was mache ich falsch mit meinem Code?

+0

versuchen 'data ['main'] ['temp']' –

Antwort

-1

tempday=item['temp'] die Schlüsselnamen zurückgibt. müssen Sie über iterieren data['main']

for item in data['main']: 
    data['main'][item] 

Ausgabe

53.2 
1021 
71 
44.6 
57.2 
+1

Dies ist keine korrekte Lösung. Es wird alle Gegenstände bekommen: 'temp',' pressure', 'feuchtigkeit' ... –

3

Ihr Code geht davon aus, dass der Inhalt von data['main'] ist ein iterable von dict s und versucht temp all diese dict s zu erhalten.

Da es nur ein weiterer Einzel dict ist, können Sie die for Schleife fallen und verwenden Sie einfach

tempday=item['main']['temp'] 
+0

Congrats. Deine Antwort ist mindestens -3 mal besser als die angenommene;) Oder höchstens weiß ich nicht was der richtige Begriff sein soll. –

0

die Fehler zu erklären, einen dict Iterierten seines Schlüssels in der Regel sind die Schlüssel in diesem Fall nur Strings. Also:

for k in some_dict: 
    # k is a string 
    # some_dict[k] return the value of k in the dict 
Verwandte Themen