Python列表元素统计次数及转为字典
Posted ZSYL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python列表元素统计次数及转为字典相关的知识,希望对你有一定的参考价值。
Python列表元素统计次数的方法
count()
array.count(x)
- 返回 x 在数组中的出现次数。
T = (123, 'Google', 'Runoob', 'Taobao', 123);
print ("123 元素个数 : ", T.count(123))
print ("Runoob 元素个数 : ", T.count('Runoob'))
以上实例输出结果如下:
123 元素个数 : 2
Runoob 元素个数 : 1
dict()
循环遍历出一个可迭代对象中的元素,如果字典没有该元素,那么就让该元素作为字典的键,并将该键赋值为1,如果存在就将该元素对应的值加1.
lists = ['a','a','b',5,6,7,5]
count_dict = dict()
for item in lists:
if item in count_dict:
count_dict[item] += 1
else:
count_dict[item] = 1
例如:
def all_house(arr):
key = np.unique(arr)
result = {}
# 循环每一个去重后的房型
for k in key:
mask = (arr == k) # 如果arr=k值,我就赋值,返回结果是 True False的列表
arr_new = arr[mask] # 添加这个户型所对应的值(取出True的数据放入arr_new中)
v = arr_new.size # 取出大小
result[k] = v # 创建键值对,加入dict中
return result
house_info = all_house(house_data)
# 去掉统计数量较少的值
# 字典推导式
house_data = dict((key, value) for key, value in house_info.items() if value > 50) # 如果value值>50就get
show_houses = pd.DataFrame({'户型': [x for x in house_data.keys()],
'数量': [x for x in house_data.values()]})
defaultdict()
defaultdict(parameter)
可以接受一个类型参数,如str,int
等,但传递进来的类型参数,不是用来约束值的类型,更不是约束键的类型,而是当键不存在的话,实现一种值的初始化。
- defaultdict(int):初始化为
0
- defaultdict(float):初始化为
0.0
- defaultdict(str):初始化为
''
from collections import defaultdict
lists = ['a', 'a', 'b', 5, 6, 7, 5]
# 创建字典对象
count_dict = defaultdict(int)
for item in lists:
count_dict[item] += 1
set()&list()
先使用set()
去重,然后循环的把每一个元素和每一个元素对应的次数lists.count(item)
组成一个元组放在列表里面。
lists = ['a', 'a', 'b', 5, 6, 7, 5]
count_set = set(lists)
count_list = list()
for item in count_set:
count_list.append((item,lists.count(item))
Counter()
Counter
是一个容器对象,主要的作用是用来统计散列对象,可以使用三种方式来初始化
- 参数里面参数可迭代对象
Counter("success")
- 传入关键字参数
Counter((s=3,c=2,e=1,u=1))
- 传入字典
Counter({"s":3,"c"=2,"e"=1,"u"=1})
Counter()
对象还有几个可以调用的方法,代码里面分别进行了说明:
from collections import Counter
lists = ['a', 'a', 'b', 5, 6, 7, 5]
a = Counter(lists)
print(a) # Counter({'a':2, 5:2, 'b':1, 6:1, 7:1})
a.elements() # 获取a所有的键,返回是一个对象,我们可以通过list来转化它
a.most_common(2) # 前两个出现频率最高的元素已经统计过次数,返回的是列表里嵌套元组
a['zz'] # 访问不存在的时候,默认返回0
a.update('aac') # 更新被统计的对象,即原有的计数值与新增的相加,而不是替换
a.substrct('aac') # 实现与原有数值相减,结果运行为0和负值
collections
collections
模块自Python 2.4
版本开始被引入,包含了dict、set、list、tuple
以外的一些特殊的容器类型,分别是:
- OrderedDict类:排序字典,是字典的子类。引入自2.7。
- namedtuple()函数:命名元组,是一个工厂函数。引入自2.6。
- Counter类:为hashable对象计数,是字典的子类。引入自2.7。
- deque:双向队列。引入自2.4。
- defaultdict:使用工厂函数创建字典,使不用考虑缺失的字典键。引入自2.5。
collections.Counter(house_data)
参考:Link
衷心感谢!
加油!
感谢!
努力!
以上是关于Python列表元素统计次数及转为字典的主要内容,如果未能解决你的问题,请参考以下文章