Изменение нечислового списка на числовое?

Они определены ранее.

def get_service_code(service): return str(service[0]) service_106_data = filter_routes(bus_stations, "106") service_106 = make_service(service_106_data, "106") #print(get_service_code(service_106)) --> should return 106 

bus_stations – это txt-файл, который содержит список чисел, подобных этому

 106,1,1,43009 106,1,2,43179 . . . 106,2,1,03239 106,2,2,03211 . . . 106,2,50,43171 106,2,51,43009 

Затем это также определено ранее

 def get_route(service, direction): return str(service[int(direction)][0]) print(get_route(service_106, '1')) 

должен вернуть это

 ['43009', '43179', '43189', '43619', '43629', '42319', '28109', '28189', '28019', '20109', '17189', '17179', '17169', '17159', '19049', '19039', '19029', '19019', '11199', '11189', '11401', '11239', '11229', '11219', '11209', '13029', '13019', '09149', '09159', '09169', '09179', '09048', '09038', '08138', '08057', '08069', '04179', '02049', 'E0200', '02151', '02161', '02171', '03509', '03519', '03539', '03129', '03218', '03219'] 

Предположим теперь, что направление «1» заменено на нечисловое число, такое как «A4» , как мне написать свой код так, что «A4» превращен в «1» ? Следующий код не будет работать для «A4», но он работает для «1»,

 def make_service(service_data, service_code): routes = [] curr_route = [] first = service_data[0] #('106', 'A4', '1', '43009') curr_dir = first[1] # 'A4' --> #how do I change this to '1' ? #additional line no. 1 for entry in service_data: direction = entry[1] #A4 stop = entry[3] #43009 if direction == curr_dir: curr_route.append(stop) #[43009] else: routes.append(curr_route) #[[]] curr_route = [stop] #[43009] curr_dir = direction #A4 # addition no.2 routes.append(curr_route) #[43009] #modification return (service_code, routes) #("106", [43009]) service_106 = make_service(service_106_data, "106") # for eg make_service(('106', 'A4', '1', '43009') , "106")) 

print(get_service_code((service_106))) -> ожидаемый доход – 106

One Solution collect form web for “Изменение нечислового списка на числовое?”

Вы можете назначить идентификационный номер для каждого уникального элемента в вашем корневом каталоге service_data или в списке, назначив каждый элемент в качестве ключа в словаре dict_. Функция ниже, to_IDS установит все элементы в service_data с номером ID в словаре dict_.

 service_data = ('106', 'A4', '1', '43009') dict_ = {} def to_IDS(service_data, dict_): ids_from_service_data = [(dict_.setdefault(i, len(dict_)))for i in service_data] return ids_from_service_data, dict_ print to_IDS(service_data, dict_) Output: [0, 1, 2, 3], {'1': 2, '43009': 3, '106': 0, 'A4': 1}) Alternative solution; service_data = ['106', 'A4', '1', '43009'] service_code = None def make_service(service_data, service_code): routes = [] curr_route = [] first = service_data[0] # will be 106, corresponding to index 0('106') in service_data service_data[1] = 1 # 'A4' --># changes value on index 1 (A4) to value 1 curr_dir = service_data[1] # curr_dir is index 1(A4 in service_data #additional line no. 1 direction = service_data[1] #direction is service_data1 stop = service_data[-1] # ends at last position in list, -1 if direction == curr_dir: curr_route.append(stop) #[43009] print curr_route else: routes.append(curr_route) #[[]] curr_route = [stop] #[43009] curr_dir = direction #A4 # addition no.2 routes.append(curr_route) service_code = service_data[0] return (service_code, routes) #("106", [43009]) print make_service(service_data, service_code) 
  • В чем разница между плюсом и добавлением в python для манипулирования списками?
  • Расширение списка списков в Python?
  • Смешайте два списка python
  • TypeError: только целые массивы с одним элементом могут быть преобразованы в индекс 3
  • Добавление списка Python
  • Как назначить по значению в python
  • Разделение строки на группы определенной длины
  • Доступ к элементу в списке списков
  • Пересечение списка в Python
  • фильтрация элементов из списка списков в Python?
  • Объединение двух списков в кортежи в python
  • Python - лучший язык программирования в мире.