python - 在字典理解中创建字典
问题描述
我有一个包含重复值的列表,我想使用字典理解来计算它们
这是我最初的尝试
number_list = [1,1,2,2,3,3,4,4,5,5]
number_count_dict = {i:1 for i in number_list}
{k: (number_count_dict[k]+1 if k in number_count_dict() else 1) for k in number_list}
有没有办法在不初始化字典的情况下实现这一点?
解决方案
你的问题遗漏了几个要点。您想要字典中的最小和最大数字是多少?你想计算 0 的数字吗?你可以使用 Counter 类吗?
#1:使用 Counter 计算从 0 到 len(number_list) 的项目,包括计数为 0 的项目。
>>> from collections import Counter
>>> number_list = [1,1,2,2,3,3,4,4,5,5]
>>> count = Counter(number_list)
>>> number_count_dict = {i:(count[i] if i in number_list else 0) for i in range(len(number_list))}
{0: 0, 1: 2, 2: 2, 3: 2, 4: 2, 5: 2, 6: 0, 7: 0, 8: 0, 9: 0}
#2:使用Counter从列表中从最低数到最高数计算项目,包括计数为0的项目。
>>> from collections import Counter
>>> number_list = [2,2,3,3,4,4,5,5,7,7]
>>> count = Counter(number_list)
>>> number_count_dict = {i:(count[i] if i in number_list else 0) for i in range(min(number_list),max(number_list)+1)}
{2: 2, 3: 2, 4: 2, 5: 2, 6: 0, 7: 2}
#3:使用计数器计算列表中的项目。
>>> from collections import Counter
>>> number_list = [1,1,2,2,3,3,4,4,5,5]
>>> count = Counter(number_list)
>>> number_count_dict = {i:count[i] for i in set(number_list)}
{1: 2, 2: 2, 3: 2, 4: 2, 5: 2}
#4:计数从 0 到 len(number_list) 的项目,包括计数为 0 的项目,不使用计数器。
>>> number_list = [1,1,2,2,3,3,4,4,5,5]
>>> number_count_dict = {i:number_list.count(i) for i in range(len(number_list))}
{0: 0, 1: 2, 2: 2, 3: 2, 4: 2, 5: 2, 6: 0, 7: 0, 8: 0, 9: 0}
#5: 计算列表中从最低数到最高数的项目,包括计数为 0 的项目,不使用计数器。
>>> number_list = [2,2,3,3,4,4,5,5,7,7]
>>> number_count_dict = {i:number_list.count(i) for i in range(min(number_list),max(number_list)+1)}
{2: 2, 3: 2, 4: 2, 5: 2, 6: 0, 7: 2}
#6:计算列表中的项目不使用计数器。
>>> number_list = [1,1,2,2,3,3,4,4,5,5]
>>> number_count_dict = {i:number_list.count(i) for i in set(number_list)}
{1: 2, 2: 2, 3: 2, 4: 2, 5: 2}
#7:奖励,使用默认字典和 for 循环。
from collections import defaultdict
number_list = [1,1,2,2,3,3,4,4,5,5]
number_count_dict = defaultdict(int)
for i in number_list:
number_count_list[i] += 1
推荐阅读
- python - 在 Python 中模拟概率问题的样本空间
- python - Python将字符串中的多个位置分别切换为多个字母
- c# - 调用方法时的 C# 运行时 NullReferenceException
- playframework - 使用 Ebean 时 Play Java Starter Example 上不支持的类文件主要版本 58
- windows - 为VS构建时,如何在调试和发布之间在CMake中指定不同的二进制文件
- java - 从不断变化的 BufferedImage 创建 RTMP 流
- html - 如何在不增加同一 div 中的图像大小的情况下增加箭头的大小?
- symfony - 如何重构 Symfony 5 控制器以符合 SOLID 设计原则
- java - 用户删除他的帐户并再次创建一个新帐户后,应用程序崩溃了 Firebase Android
- lua - Lua 挂载文件系统