#python #python-3.x #dictionary #spyder
#python #python-3.x #словарь #spyder
Вопрос:
Я пытаюсь отфильтровать МЕСТОПОЛОЖЕНИЕ моего словаря с помощью dictionary LOCATION_SUPPLY_OPEN. Если значение LOCATION_SUPPLY_OPEN равно 1, в new_dict должен быть ключ (который равен 1) со значением местоположения словаря с тем же ключом.
Я пробовал это с разными функциями, но это не сработало надеюсь, вы сможете мне помочь, потому что я совсем новичок в Python Спасибо!
LOCATION = {
'Berlin': (13.404954, 52.520008),
'Cologne': (6.953101, 50.935173),
'Hamburg': (9.993682, 53.551086),
'Stuttgart': (9.181332, 48.777128),
'Munich': (11.576124, 48.137154),
}
# Open Location Dictionary kinda Binary, 1:open Location, 0:otherwise
LOCATION_SUPPLY_OPEN = {
'Berlin': (0),
'Cologne': (1),
'Hamburg': (0),
'Stuttgart': (1),
'Munich': (1),
}
new_dict = {}
# new_dict should have the keys from LOCATION_SUPPLY_OPEN with a value of 1 and the values of LOCATION
# new_dict = {"Cologne":(6.953101, 50.935173), 'Stuttgart': (9.181332, 48.777128),'Munich': (11.576124, 48.137154) }
#Here I have tried it but it didn't work
LOCATIONS = {}
for (key,value) in LOCATION_SUPPLY_OPEN.items():
if value > 0:
LOCATIONS[key] = LOCATION[value]
Ответ №1:
Вы сделали почти все, кроме присвоения правильных значений new_dict
Проверьте это один:
LOCATION_SUPPLY_OPEN = {
'Berlin': (0),
'Cologne': (1),
'Hamburg': (0),
'Stuttgart': (1),
'Munich': (1),
}
LOCATION = {
'Berlin': (13.404954, 52.520008),
'Cologne': (6.953101, 50.935173),
'Hamburg': (9.993682, 53.551086),
'Stuttgart': (9.181332, 48.777128),
'Munich': (11.576124, 48.137154),
}
new_dict = {}
# new_dict = {"Cologne":(6.953101, 50.935173), 'Stuttgart': (9.181332, 48.777128),'Munich': (11.576124, 48.137154) }
for key, value in LOCATION_SUPPLY_OPEN.items():
if value:
new_dict[key] = LOCATION[key]
print(new_dict)
С пониманием Dict:
new_dict = {key: LOCATION[key] for (key, value) in LOCATION_SUPPLY_OPEN.items() if value}
Дополнительные оптимизации приветствуются 😉
Комментарии:
1. Потрясающе, я застрял там больше часа, что точно означает строка:»if value:»? Есть ли значение для ключа больше 0?
2. Вы упомянули в своем вопросе, что значения в
LOCATION_SUPPLY_OPEN
являются своего рода двоичными, так что1
означаетTrue
, else0
дляFalse
. Вы можете изменить этоif
условие, если ожидаете другихbinary
значений.