#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('/'))