python - 如果字典的值是列表,如何将字典的值相乘或相加
问题描述
import csv
ratings_file = open("ratings.txt","r")
book_file = open("booklist.txt","r")
ratinglist = open("ratings.txt").readlines()
booklist = open("booklist.txt").readlines()
keys = [key.strip('\n') for key in ratinglist[0::2]]
values = [value.strip(' \n').split(' ') for value in ratinglist[1::2]]
my_dict = dict(zip(keys, values))
print(my_dict)
我的字典:
{'Nathan': ['0', '0', '0', '0', '0', '0', '0', '-5', '0', '5', '1', '0', '0',
'0', '1', '0', '5', '0', '-3', '0', '3', '0', '0', '0', '0', '0',
'0', '-5', '0', '0', '-3', '5', '0', '5', '0', '3', '0', '0', '1',
'0', '3', '1', '3', '5', '0', '0', '0', '0', '0', '1', '-5', '0',
'0', '0', '0']}
我有这本字典,它的键是名称,然后值是值列表。
我想知道是否可以将所有值添加到关联的键中,并使其成为另一个具有键值的字典。
例如,我想知道我是否可以这样做:
'Nathan' : ['241']
而不是所有的值都是不同的整数
我知道如何为列表或字典添加所有值,但我不明白如何为具有值列表的字典执行此操作。
谢谢
解决方案
利用sum()
并type()
可以实现这一点。
d = { 'test': [1, 2, 3, 4, 5] }
result = {key: sum(value) for key, value in d.items() if type(value) is list}
#{'test': 15}
如果您输入的是字符串,则可以更改sum(value)
为sum(map(int, value))
这将遍历key, value
字典中的每一对,检查值是否为列表,sum()
结果是否为True
.
要乘法,您可以将numpy
上述内容导入并更改为;
import numpy as np
result = {key: np.prod(value) for key, value in d.items() if type(value) is list}
#{'test': 120}
推荐阅读
- regex - 使用记事本++上的正则表达式提取以不同值重复的标签
- javascript - 追加限制为 1 时更新变量的值
- php - PHP - 对不同的数组求和
- tomcat - intellij 的 gwh 问题:无法反序列化响应
- c++ - 有没有办法在条件语句中声明对象?
- r - 多列时间序列分析
- angular - 如果我决定在没有 ngx-leaflet 库的情况下在 Angular 中使用传单,我需要照顾自己什么?
- python - 如何比较两个列表的效率
- html - Recharts - 将 dataKey 的值传递给子组件
- python - 如何使用 Pandas 从 Python 中的 Url 读取数据?