[英]How to check if something has been process Python
我必须检查是否已处理字符串/电子邮件如果已处理是因为已打印“END”
我的过程是一个循环,每天检查5天前的这种结构:
获取 email -> 处理 email -> 获取信息 -> 修改数据 -> “END”
我必须保存这个:
处理? | 日期 | |
---|---|---|
a@gmail.com | 真的 | 2021 年 8 月 4 日 |
b@gmail.com | 错误的 | 2021 年 2 月 4 日 |
我正在考虑使用这样的字典:
Keys: email, processed, date
Values: ['a@gmail.com','b@gmail.com'], [True, False], ['08/04/2021', '02/04/2021']
但我完全不确定
你有什么建议?
您可以使用 JSON 作为对象列表(这是有效的 JSON )
[
{
"email":"foo@example.com",
"processed":true,
"date":"2021-04-08"
},
{
"email":"bar@example.com",
"processed":false,
"date":"2021-04-06"
}
]
与 Python 对象( list
和dict
)的对应关系很简单。
您建议的字典结构效果很好,但如果您将其扩展到数千封电子邮件,则检索这些数据会有点困难。 如果您有一百万封电子邮件,并且想要检查是否处理了 abc@gmail.com,则必须找到 email 的索引,然后使用该索引。
我建议使用 email 作为这样的关键
{'a@gmail.com' : [True,'08/04/2021'], 'b@gmail.com' : [False,'02/04/2021']}
这样即使您有一百万封电子邮件,您也可以使用dictionary['a@gmail.com']
获取所有详细信息
让 Anandha 的回答更进一步,我会这样做:
data = {'a@gmail.com' : {"processed":True,'date':'08/04/2021'}, 'b@gmail.com' : {"processed":False,'date':'02/04/2021'}}
然后会有一个完整的状态报告:
for key in data:
if data[key]['processed'] not True:
print("We have not yet processed account: " + key)
else:
print(key + " was processed on " + data[key]['date'])
或者如果你想检查一个人
key = "a@gmail.com"
if data[key]['processed'] not True:
print("We have not yet processed account: " + key)
else:
print(key + " was processed on " + data[key]['date'])
显然,您将 if 循环放入单独的 function 以整理您的代码。
在 5 天前搜索方面,我建议使用 datetime.strptime() 转换您的日期条目,然后使用 datetime.now() 中的 timedelta(days=-5) 检查它是否在 5 天 window 内。
编辑:创建字典(单个条目):
data = {}
data['c@gmail.com']={'processed':False, 'date':'2021/04/08'}
data['d@gmail.com']={'processed':True, 'date':'2021/04/07'}
如果您是从现有文件或变量创建,那么我需要在提出建议之前查看它的形状。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.