Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中基于日期的过滤字典?_Python - Fatal编程技术网

python中基于日期的过滤字典?

python中基于日期的过滤字典?,python,Python,我有一本字典,看起来像这样,日期是字符串格式的:- { "2021-04-21" : "Shoes", "2021-04-07" : "Clothes" "2021-03-19" : "Chocolates" "2021-03-12" : "Flowers", "2021-03-03" : "

我有一本字典,看起来像这样,日期是字符串格式的:-

{ "2021-04-21" : "Shoes",
  "2021-04-07" : "Clothes"
  "2021-03-19" : "Chocolates"
  "2021-03-12" : "Flowers",
  "2021-03-03" : "Gloves" }
我创建dict的方式是通过一个列表:-

my_order_dictionary = {s[:10]: s[10:] for s in output[1:]}
我试图从今天获取30天前的日期的值,因此我做到了:-

d = datetime.today() - timedelta(days=30)
for key,value in my_order_dictionary.items():
    if (key < d):
        print(value)
d=datetime.today()-timedelta(天=30)
对于键,在my_order_dictionary.items()中输入值:
如果(键
但我得到了以下错误:-

    if (key < d):
TypeError: '<' not supported between instances of 'str' and 'datetime.datetime'
if(键TypeError:“
是一个字符串
d
是一个
datetime
。您必须将字符串日期转换为
datetime
。你有一个一致的格式;我希望你能用你已经知道的来处理转换,是吗

例如:

my_order_dictionary = {datetime.strptime(s[:10], "%y-%m-%d")): s[10:]
                       for s in output[1:]}

这是因为
是一个str值

根据字典初始化,每个键都是一个字符串。 因为你在字典的每个键中循环,所以
变量也是字符串。不能将字符串与DateTime对象进行比较


您可以使用将字符串转换为datetime对象。

您可以将
d
格式化为字符串,以便与字典键进行比较

d = (datetime.today() - timedelta(days=30)).strftime('%Y-%m-%d')

您必须将日期时间(以字符串形式给出)强制转换为python日期时间对象,以便与
d
进行比较。你可以用datetime的方法来做。 您必须更改if语句以获得所需的行为

if (datetime.strptime(key, '%Y-%m-%d') < d):
if(datetime.strtime(键'%Y-%m-%d')
“您必须将字符串日期转换为
datetime
”-为什么他们不能将日期时间转换为字符串日期?在我看来,这也会更有效,因为它只需要一次转换。事实上,字符串的排序顺序也可以用来比较日期。然而,内置的日期比较也相当快。我选择转换为datetime,因为这将比字符串更“自然”地支持将来的使用。