用python生成直方图_python:从字典中创建直方图

我是python的新手,正在学习如何以正确的方式做事.我有词典列表d.每个字典代表用户,并包含user_id,age等信息.此列表d可以包含代表同一用户的几个字典(但信息略有不同,这与我的目的无关).我想创建直方图,显示给定年龄的d中有多少用户.如何以有效的方式做到这一点?编辑:我想强调一下,我需要消除列表中的重复项.解决方法:那么,解决这个问题的经典方法是创建一个defaultdict:impo...
摘要由CSDN通过智能技术生成

我是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_record

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值