遍历订单以捕获和组织时间值

时间:2019-05-06 14:32:37

标签: python

我有一个订单列表,“ for”循环正在迭代该订单列表,以列出下订单的时间。变量“ ordertime”是存储时间的位置。我想使用“ if”语句进行匹配,然后将其写入熊猫中的相应列或csv(即12pm)中,其值为“ 1”,然后得出某人的总次数在该特定时间订购。有没有更简单的方法来编译此总数(也许使用列表)?我不确定如何构建逻辑。以下是到目前为止的内容。这将成功打印所有时间。当前的结构方式,我将必须在12 pm,1 pm,2 pm等所有时间创建一个“ if”语句。我敢肯定有更好的方法。

    for time in orders: 
        ordertime = time.text

        ordertime = re.sub(':\d+', '', ordertime)

        if ordertime == ("12 pm"):

            print(ordertime)

        else:
            pass

1 个答案:

答案 0 :(得分:0)

我想我已经知道了您要尝试的基本概念。这是与您的代码相似的代码,但是可以更正确地命名事物并填写所有缺少的部分,以便它可以运行。这就是Minimal, Complete, and Verifiable Example的含义。这将建立一个名为ordertimes的字典,该字典可为您提供在每个特定时间订购某商品的次数:

import re
from collections import defaultdict

class Order:
    def __init__(self, text):
        self.text = text

orders = [
    Order('9 am:12345'),
    Order('4 pm:43434'),
    Order('7 pm:45454'),
    Order('11 am:33'),
    Order('9 am:5454'),
    Order('4 pm:6666'),
]

ordertimes = defaultdict(int)

for order in orders:

    ordertime = order.text
    ordertime = re.sub(':\d+', '', ordertime)
    ordertimes[ordertime] += 1

for time in ordertimes:
    print(time + ': ' + str(ordertimes[time]))

结果:

9 am: 2
4 pm: 2
7 pm: 1
11 am: 1