2024-06-26 14:49:09 发布
网友
我有下列词典。你知道吗
myD = {0: [1,2,3,4], 2: [2,3,4,5], 3: [3,4,5,6]}
我需要创建一个新的字典(或更新当前字典),方法是使用下面列表中的数字来划分值(列表)
deviders = [2,4,8]
预期输出(伪)—>
newD = {0: [1,2,3,4]/2, 2: [2,3,4,5]/4, 3: [3,4,5,6]/8}
有没有一个优雅的方法来做这个计算和创建一个新的字典?你知道吗
你可以用字典来理解。首先把你的键映射到除法因子。然后用列表理解法将列表中的每个元素分开。你知道吗
div_map = {0: 2, 2: 4, 3: 8} # or div_map = dict(zip(sorted(myD), (2, 4, 8))) newD = {k: [i / div_map[k] for i in v] for k, v in myD.items()}
您尝试的语法类似于第三方库NumPy:
import numpy as np newD = {k: np.array(v) / div_map[k] for k, v in myD.items()}
这是我对你的问题的看法,希望对你有所帮助
def div(d, my_dict): count = 0 for k, v in my_dict.items(): my_dict[k] = [num/d[count] for num in v] count +=1 return my_dict myD = {0: [1,2,3,4], 2: [2,3,4,5], 3: [3,4,5,6]} dividers = [2,4,8] print(div(dividers, myD))
考虑到按键之间的交错间隔,您可以使用以下方法:
from __future__ import division d = {0: [1,2,3,4], 2: [2,3,4,5], 3: [3,4,5,6]} dividers = [2,4,8] new = dict((k, [i / j for i in d[k]]) for k, j in zip(sorted(d), dividers)) # {0: [0.5, 1.0, 1.5, 2.0], # 2: [0.5, 0.75, 1.0, 1.25], # 3: [0.375, 0.5, 0.625, 0.75]}
在Python<;3.7中,对字典的键进行排序可能是个好主意,因为它们的顺序不能保证与dividers对齐。这导致需要使用d[k]而不是.items()/.iteritems()来迭代字典。你知道吗
dividers
d[k]
.items()
.iteritems()
你可以用字典来理解。首先把你的键映射到除法因子。然后用列表理解法将列表中的每个元素分开。你知道吗
您尝试的语法类似于第三方库NumPy:
这是我对你的问题的看法,希望对你有所帮助
考虑到按键之间的交错间隔,您可以使用以下方法:
在Python<;3.7中,对字典的键进行排序可能是个好主意,因为它们的顺序不能保证与
dividers
对齐。这导致需要使用d[k]
而不是.items()
/.iteritems()
来迭代字典。你知道吗相关问题 更多 >
编程相关推荐