我使用API从网站下载票号,然后计算我创建的只接受一个ID实例的数组中的唯一票证ID。
这很慢......我尝试过使用套装,情况更糟。我已经看到过提到其他工具,比如itertools,但没有明确解释我如何在类似于我的情况下使用它。
好的和坏的变量存储了一种我能说的发电机。非常感谢你的帮助!!!
good = self._client.satisfaction_ratings(score="good",sort_order="asc",start_time=thirty_days,end_time=today)
bad = self._client.satisfaction_ratings(score="bad", sort_order="asc", start_time=thirty_days, end_time=today)
good_array = []
bad_array = []
for g in good:
if g.ticket.id not in good_array:
good_array.append(g.ticket.id)
for b in bad:
if b.ticket.id not in bad_array:
bad_array.append(b.ticket.id)
goodnum = len(good_array)
badnum = len(bad_array)
答案 0 :(得分:3)
if g.ticket.id not in good_array
good_array
作为list
的{{1}}速度很慢,因为它使用线性搜索(我知道顺序并不重要)
使用set
是保留唯一元素的完美方式(不能慢,你必须以错误的方式使用它们)
现在,只需删除循环并创建2个集合理解:
good_array = {g.ticket.id for g in good}
bad_array = {g.ticket.id for g in bad}
然后像你一样计算:
goodnum = len(good_array)
badnum = len(bad_array)
答案 1 :(得分:-1)
set是一个python数据类型,它不允许重复。 只需将好的和坏的列表设置为 -
unique_good = set(good)
unique_bad = set(bad)
你可以用与列表相同的方式获得集合的长度。