利用字典来完成较大列表中每个元素的计数

2020-07-10  本文已影响0人  大海龟啦啦啦

有很多时候我们需要对自己的文件进行去冗余,一般我都是通过将其导入到列表之后通过删除列表中重复元素来进行的,参见(https://www.jianshu.com/p/5fbe7222c609)。但是有时候我们会需要对去冗余之后的元素进行在原始列表中数量的计算,这时候如果我们用count的方法可能就会非常的慢,因此我利用字典来完成这一操作,只需要对列表进行一次遍历即可得到删除了重复元素的列表和每个元素的数量

In [25]: list1 = [1 , 2 , 3 , 4 , 5 , 4 , 2 , 6 , 3 , 8 , 7 , 9 , 10 , 7 , 4 , 3 , 1 , 2 , 5 , 6 , 8 , 9 , 7 , 6]

In [26]: dict1 = {}

In [27]: for i in list1:
    ...:     dict1[i] = dict1.get(i , 0) + 1
    ...:

In [28]: dict1
Out[28]: {1: 2, 2: 3, 3: 3, 4: 3, 5: 2, 6: 3, 7: 3, 8: 2, 9: 2, 10: 1}

In [29]: for key1 , value1 in dict1.items():
    ...:     print(key1 , value1)
    ...:
1 2
2 3
3 3
4 3
5 2
6 3
8 2
7 3
9 2
10 1

注:代码中的key1对应的即去冗余之后的元素,value1对应的即每个元素在原列表中的数量。要想通过这个方法来获得删除列表重复元素的话,只需要进行下面的操作

In [30]: unique_list1 = []

In [31]: unique_value_list = []

In [32]: for key1 , value1 in dict1.items():
    ...:     unique_list1.append(key1)
    ...:     unique_value_list.append(value1)
    ...:

In [33]: unique_list1
Out[33]: [1, 2, 3, 4, 5, 6, 8, 7, 9, 10]

In [34]: unique_value_list
Out[34]: [2, 3, 3, 3, 2, 3, 2, 3, 2, 1]

unique_list1列表中即删除重复值之后的列表
此外,如果列表不大的话可以通过下面的代码来完成,列表太大的话就不要用下面的方法了。

In [35]: list1 = [1 , 2 , 3 , 4 , 5 , 4 , 2 , 6 , 3 , 8 , 7 , 9 , 10 , 7 , 4 , 3 , 1 , 2 , 5 , 6 , 8 , 9 , 7 , 6]

In [36]: unique_list1 = list(set(list1))

In [37]: unique_value_list = []

In [38]: for i in unique_list1:
    ...:     unique_value_list.append(list1.count(i))
    ...:

In [39]: unique_list1
Out[39]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

In [40]: unique_value_list
Out[40]: [2, 3, 3, 3, 2, 3, 3, 2, 2, 1]
上一篇 下一篇

猜你喜欢

热点阅读