首页 > 解决方案 > 如果字典的值是列表,如何将字典的值相乘或相加

问题描述

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']

而不是所有的值都是不同的整数

我知道如何为列表或字典添加所有值,但我不明白如何为具有值列表的字典执行此操作。

谢谢

标签: pythondictionary

解决方案


利用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}

推荐阅读