python-3.x - 在嵌套字典中查找非零单个值的总和
问题描述
所以我写了这段代码,我试图找到每本书的每个非零评分的总和,以便找到每本书的评分平均值,而不包括每本书的零评分。
这是我试图做的,它正在工作。但是我不知道如何找到每本书的每个评分的总和并找到平均值。
books = ['book1', 'book2', 'book3']
biglist = [{'user1' : {'book1' : 0, 'book2' : -2, 'book3' : 3}},
{'user2' : {'book1' : 5, 'book2' : 0, 'book3' : -3}},
{'user3' : {'book1' : 1, 'book2' : 5, 'book3' : 3}}]
total = dict()
count = 0
for list_item in biglist:
for key, value in list_item.items():
for key2, value2 in value.items():
total[key2] = value2 + total.get(key2,0)
for book in books:
if value2 != 0 and book == key2:
count += 1
print(f"Found non-zero value, [{key2} : {value2}]
解决方案
应该适用于您的数据结构的东西。收集所有评级,然后过滤各个列表。
big_dict = {}
for book in books:
big_dict[book] = []
# collect all ratings
for d in biglist:
for _, ratings in d.items():
for book in books:
big_dict[book].append(ratings.get(book))
for book, rating in big_dict.items():
# compute averages of filtered list
average_rating = np.mean([a for a in rating if a != 0])
print(book, average_rating)
推荐阅读
- sql - SQL 拆分行
- java - @AllArgsConstructor 未在 Enum 上生成构造函数
- java - 使用 JProfiler 进行 JVM 优化
- c# - Visual Studio - 在客户端应用程序中使用已编译的静态类
- objective-c - 在边界内旋转图像
- angular - 将库/模块移到 node_modules 之外
- python - tensorflow 中损失的 logits 可以是占位符
- python - 如何使用带有 cassandra 数据库的 python 来实现 Arima 时间序列预测?
- java - XSL FOP 卡纳达语字体未正确显示
- reactjs - 在组件渲染之前未填充 Redux Store