Как использовать отсортированные даты в списке в качестве ключей для словаря в Python? - PullRequest
0 голосов
/ 19 июня 2011

У меня есть некоторый код Python, где мне нужно вызвать словарную запись с ключом, который является датой.

    start = (date_objects[0])
    end = (date_objects[-1])
    print "The study's first trading day was", start, "and the last day was", end,"."
    print ""
    print histodict['2011-06-15']['Close']
    print histodict[start]['Open']

Все даты отсортированы и помещены в список с именем date_objects.Даты также форматируются как даты.Когда я пытаюсь напечатать переменную, содержащую точку в списке дат, все выглядит просто, и я получаю аккуратную распечатку типа YYYY-MM-DD вместо формы даты datetime.date (2010, 1, 4).Теперь, что мне нужно сделать, это получить этот хороший, отсортированный по списку список, чтобы его можно было использовать для ключей в словаре.У меня есть ключи, которые также имеют вид YYYY-MM-DD.Почему, когда я пытаюсь использовать переменную с точкой в ​​списке объектов даты в качестве значения ключа для моего словарного гистодикта, она не работает?

1 Ответ

1 голос
/ 19 июня 2011

A date объект hashable .Вот почему вы можете использовать его в качестве словарного ключа.Но это не означает, что объект date хэшируется в удобочитаемое строковое представление, которое вы используете (или видите при печати объекта даты), потому что __hash__ и __str__ методы date, которые выполняют хеширование ипреобразование в строку не обязательно совпадает.

Вы можете попробовать histodict[str(start)]['Open'] (т. е. преобразовать переменную даты в строку, используя метод объектов даты * __str__, прежде чем использовать его в качестве ключа).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...