2016-10-15 2 views
1

Я никогда раньше не разбивал строки на Python, поэтому не уверен, что здесь происходит не так.Разбиение строк неотображаемым типом

import pyowm 

owm = pyowm.OWM('####################') 

location = owm.weather_at_place('Leicester, uk') 
weather = location.get_weather() 
weather.get_temperature('celsius') 
temperature = weather.get_temperature('celsius') 

print(temperature[5:10]) 

Ошибка получил

sudo python weather.py 
Traceback (most recent call last): 
File "weather.py", line 10, in <module> 
print(temperature[5:10]) 
TypeError: unhashable type 
+1

Вы под впечатлением, что 'temperature' является строкой? Это не строка. Это похоже на меня. – user2357112

+0

@ user2357112 Я начинаю в темноте с Python здесь, спасибо, я попробую и выясню это здесь и дам вам знать, что я нахожу;) – NathanK

+0

Не конвертируйте словарь в строку, а затем разрежьте его, словари 'заказ не гарантируется, и вы, скорее всего, получите мусор из него. –

ответ

2

get_temperature возвращает словарь, который вы затем пытается индексировать с slice объекта, который не является hashable. например

>>> hash(slice(5, 10))                   
Traceback (most recent call last):                
    File "<stdin>", line 1, in <module>               
TypeError: unhashable type 

Чтобы получить нужную температуру, вам необходимо получить его из словаря, как это:

temperature['temp'] 
+0

Спасибо, это имеет смысл сейчас. Я не знал о типе словаря, я думаю, что его время, чтобы получить мою книгу Питона из шкафа: D – NathanK

Смежные вопросы