我有这样一个dict对象的列表:
[{'emailAddress': 'user1@example.com', 'country': 'US'},
{'emailAddress': 'user2@example.com', 'country': 'CA'},
{'emailAddress': 'user3@example.com', 'country': 'UK'}]
dict对象的列表只有20多万条记录。在
我想做的是找到国家的电子邮件地址列表。例如,如果我有这样一个列表:
^{pr2}$我想还这个:
['US', 'UK']
现在,我可以通过定义如下函数来实现:
def getBaseOUs(emailAddresses):
countries = []
for emailAddress in emailAddresses:
for user in usermap:
if emailAddresses == user['emailAddress']:
countries.append(user['country'])
return countries
但是我想知道人们认为最快/最节省cpu的方法是什么?在
谢谢。在
试试这个:
数据帧也应该比你的dicts列表占用更少的空间,并且通过将email作为索引,每次查找它都是O(1)。在
编辑:深空提出了一个很好的观点。要减少占用空间,可以删除原始dict:
^{pr2}$不过,如果可以的话,从一开始就使用更紧凑的Pandas dataframe,而不创建dict
与其检查每个用户的每个电子邮件地址,不如按电子邮件地址查找用户:
然后利用它:
^{pr2}$如果你想查询尽可能多的电子邮件地址,这可能是你的最佳选择
另一方面,如果只查询一小部分用户:
^{pr2}$当然,最好的整体解决方案是创建一个字典,将电子邮件映射到您当前拥有的词典:
现在,您可以这样查询它:
相关问题 更多 >
编程相关推荐