#python #csv
Вопрос:
Я пытаюсь создать код, который сортирует несколько городов по группам в зависимости от их температуры в определенный день. Группа создается с шагом 5 градусов Цельсия, который начинается с 0. Таким образом, от 0 до (но исключая) 5, это группа 1, от 5 до (но исключая 10) называется группой 2. Я не уверен, как это исправить, не мог бы кто-нибудь указать мне правильное направление, пожалуйста?
Мой код до сих пор:
cities_per_temp_bin = {} #K is bin, V is city
is_first_line = True
city = []
for row in open("climate_data_Dec2017.csv"):
if is_first_line:
is_first_line = False
else:
values = row.split(",")
date = values[0]
if date == "2017-12-25":
cities = values[2].split()
temp = float(values[5])
group = int(temp//5)
for line in cities:
city.append(cities)
if city not in group: #Error: TypeError: argument of type 'int' is not iterable
cities_per_temp_bin = city
for key in sorted(cities_per_temp_bin):
print(key, ":", sorted(cities_per_temp_bin[key]))
Комментарии:
1.
list
Тип Python не хэшируется, и поэтомуlist
объекты не могут использоваться в качестве ключей в словаре.2. Я рекомендую заглянуть в пакет Pandas.
3. Группа-это целочисленная переменная , в соответствии с вашим кодом ее температура, возможно, вам придется проверить город в словаре cities_per_temp_bin . Прикрепите CSV или firsr 2 строки CSV, чтобы мы могли изменить ваш код
4. Пожалуйста, добавьте несколько строк вашего CSV-файла к вашему вопросу, чтобы мы могли скопировать/вставить и протестировать ваш код
5. вы пробовали вложенную иерархию словарей?