我有一个订单列表,“ 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
答案 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