首页 / PYTHON / python-优化字典的创建
python-优化字典的创建
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-优化字典的创建,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1024字,纯文字阅读大概需要2分钟。
内容图文
![python-优化字典的创建](/upload/InfoBanner/zyjiaocheng/685/a8db48a3fab94a1c80f761875e22d425.jpg)
我有一个ID称为ID的列表. id中的每个元素都是一个字符串.一个ID可以在此列表中多次存在.
我的目的是创建一个字典,该字典以出现的次数作为关键字,值是经常出现的ID的列表.
我当前的方法如下所示:
from collections import defaultdict
import numpy as np
ids = ["foo", "foo", "bar", "hi", "hi"]
counts = defaultdict(list)
for id in np.unique(ids):
counts[ids.count(id)].append(id)
输出:
print counts
--> defaultdict(<type 'list'>, {1: ['bar'], 2: ['foo', 'hi']})
如果ID列表不太长,则效果很好.但是,对于较长的列表,性能相当差.
我怎样才能使它更快?
解决方法:
为整个列表创建一个collections.Counter,而不是为列表中的每个元素调用count:
ids = ["foo", "foo", "bar", "hi", "hi"]
counts = defaultdict(list)
for i, c in Counter(ids).items():
counts[c].append(i)
# counts: defaultdict(<class 'list'>, {1: ['bar'], 2: ['foo', 'hi']})
如果您喜欢单线,也可以将Counter.most_common(用于查看按计数排序的元素)和itertools.groupby(但我宁愿不使用)结合使用
>>> {k: [v[0] for v in g] for k, g in groupby(Counter(ids).most_common(), lambda x: x[1])}
{1: ['bar'], 2: ['foo', 'hi']}
内容总结
以上是互联网集市为您收集整理的python-优化字典的创建全部内容,希望文章能够帮你解决python-优化字典的创建所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。