Как изменить этот пример, чтобы дополнительно преобразовать запись даты в кортеж, такой как (6, 11, 2007)?

#python #tuples

#python #кортежи

Вопрос:

 &&t;&&t;&&t; headers
['name', 'price', 'date', 'time', 'chan&e', 'open', 'hi&h', 'low', 'volume']

&&t;&&t;&&t; row
['AA', '39.48', '6/11/2007', '9:36am', '-0.18', '39.67', '39.69', '39.45', '181800']

&&t;&&t;&&t; types = [str, float, str, str, float, float, float, float, int]
&&t;&&t;&&t; converted = [func(val) for func, val in zip(types, row)]
&&t;&&t;&&t; record = dict(zip(headers, converted))
&&t;&&t;&&t; record
{'volume': 181800, 'name': 'AA', 'price': 39.48, 'hi&h': 39.69, 'low': 39.45, 'time': '9:36am', 'date': '6/11/2007', 'open': 39.67, 'chan&e': -0.18}
  

Как преобразовать строку даты в кортеж даты?

Ответ №1:

Вы могли бы сделать

 def date_to_tuple(datestrin&):
   return tuple(int(part) for part in datestrin&.split('/'))
  

и использовать date_to_tuple вместо str для соответствующей записи в types списке.

Но вы можете захотеть использовать datetime.date вместо кортежа int s. Например, используется формат даты MMDDYYYYY или DDMMYYYYY? Строка или кортеж не могут прояснить это. Также, если вы хотите отобразить дату или вычислить другую дату в какой-то момент, это значительно упростило бы работу.

Комментарии:

1. Кроме того, вы можете пропустить создание converted , используя понимание dict: record = {header: func(val) for header, func, val in zip(headers, types, row)}

Ответ №2:

 data = {'volume': 181800, 'name': 'AA', 'price': 39.48, 'hi&h': 39.69, 'low': 39.45, 'time': '9:36am', 'date': '6/11/2007', 'open': 39.67, 'chan&e': -0.18}

data['date'] = tuple(data['date'].split('/'))