首页 / PYTHON / python:从字典中创建直方图
python:从字典中创建直方图
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python:从字典中创建直方图,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1852字,纯文字阅读大概需要3分钟。
内容图文
我是python的新手,正在学习如何以正确的方式做事.
我有词典列表d.每个字典代表用户,并包含user_id,age等信息.此列表d可以包含代表同一用户的几个字典(但信息略有不同,这与我的目的无关).我想创建直方图,显示给定年龄的d中有多少用户.如何以有效的方式做到这一点?
编辑:
我想强调一下,我需要消除列表中的重复项.
解决方法:
那么,解决这个问题的经典方法是创建一个defaultdict:
import collections
histogram = collections.defaultdict(int)
然后遍历列表中的字典,并使用d_list而不是d作为字典列表的名称,
for d in d_list:
histogram[d['age']] += 1
但是你包含了令我困惑的其他信息.你说多个dicts可以代表同一个用户.你想从直方图中消除那些重复吗?如果这是你的问题,一种方法是将用户存储在user_records的dict中,使用(firstname,lastname)元组作为键.然后,表示同一用户的连续词典将相互粉碎,并且每个用户仅保留一个记录.然后迭代该字典中的值(可能使用user_records.itervalues()).
可以修改此一般方法以使用每个记录中的任何值来最佳地标识唯一用户.如果user_id值对于每个用户是唯一的,则使用该值作为键而不是(firstname,lastname).但是你的问题(对我而言)建议对于两个相同的用户,user_id不一定相同.
但是,一旦你有了删除的重复项,如果你使用的是Python> = 2.7,那么还有一个快捷方式:
histogram = collections.Counter(d['age'] for d in user_records.itervalues())
一些示例代码…说我们有一个record_list:
>>> record_list
[{'lastname': 'Mann', 'age': 23, 'firstname': 'Joe'},
{'lastname': 'Moore', 'age': 23, 'firstname': 'Alex'},
{'lastname': 'Sault', 'age': 33, 'firstname': 'Marie'},
{'lastname': 'Mann', 'age': 23, 'firstname': 'Joe'}]
>>> user_ages = dict(((d['firstname'], d['lastname']), d['age']) for d in record_list)
>>> user_ages
{('Joe', 'Mann'): 23, ('Alex', 'Moore'): 23, ('Marie', 'Sault'): 33}
如您所见,record_list有重复,但user_ages dict没有.现在计算年龄就像通过计数器运行值一样简单.
>>> collections.Counter(user_ages.itervalues())
Counter({23: 2, 33: 1})
对于可以作为特定用户的唯一标识符的任何字符串或不可变对象,可以完成同样的事情.
内容总结
以上是互联网集市为您收集整理的python:从字典中创建直方图全部内容,希望文章能够帮你解决python:从字典中创建直方图所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。