将字典乘以整数

时间:2017-02-14 06:28:50

标签: python dictionary

我想创建一个新的字典,它是对原始字典的修改。以下是示例代码。

alex = {
    'salary' = 50
    'money' = 40
    'saving' = 60
    'debt' = 20
}

    crisis = 2

  #where newalex is the result of alex * crisis

newalex = {
    'salary' = 100
    'money' = 80
    'saving' = 120
    'debt' = 40
}

我将如何做到这一点?

5 个答案:

答案 0 :(得分:3)

你可以用字典理解来做到这一点:

newalex = {key: value * crisis for key, value in alex.items()}
#               ^^^^^^^^^^^^^^---- this multiplies every value with "crisis".

答案 1 :(得分:2)

你可以继承dict:

>>> class muldict(dict):
...  def __mul__(self, integer):
...   return muldict([[key, self[key] * integer] for key in self])
... 
>>> alex = muldict({'salary': 50, 'money': 40, 'saving': 60, 'debt': 20})
>>> alex * 2
{'salary': 100, 'money': 80, 'debt': 40, 'saving': 120}

答案 2 :(得分:2)

有两种方法,(我知道:P)

首先...

你有一个将字典作为参数的函数,

创建一个新词典,

遍历旧词典;取值,将该值乘以一个因子,

然后你返回新词典。

替代地...

不要创建新的字典,而是在函数中解析的本地字典上执行相同的操作。

这是我的例子......

def mult_dictionary_new(dictionary,x):
    new = {}
    for key in dictionary:
        new[key] = dictionary[key] * x
    return new

和替代解决方案......

def mult_dictionary_modify(dictionary,x):
    for key in dictionary:
        dictionary[key] *= x
    return dictionary

编辑2:

进一步的呻吟!

如果您想将字典乘以另一个字典,请更改此功能。

def mult_dictionary(a,b):
    for key in b:
        a[key] *= b[key]
    return a

只要'b'是'a'的元素,这就可以工作。即'b'中的每个键都是'a'中的键。

结束编辑2

希望这会有所帮助:D

康纳

编辑1:我建议你使用函数,因为如果你想在各种字典上进行批量操作,那将会更容易。

确定单线解决方案可能是您所需要的,但是让您的程序具有有意义名称的功能对于故障排除来说是一个巨大的优势。

加...

确保你正在创建你的词典......

dict = {'key': value,
        'another key': anothervalue}

而不是......

dict = {'key' = value}

键使用冒号':'而不是等于'='来分配,并且字典中的每个元素都需要用逗号分隔','

您还可以通过执行...

为值指定键
dict['key'] = value

答案 3 :(得分:0)

这是针对python2.7

newalex = {}
crisis = 2
for key, val in alex.iteritems()
    newalex[key] = val * crisis

这是针对python3.4

newalex = {}
crisis = 2
for key, val in alex.items()
    newalex[key] = val * crisis

答案 4 :(得分:0)

使用dictionary comprehension

尝试这样的事情
>>> alex = {'salary': 50, 'money': 40, 'saving': 60, 'debt': 20}
>>> crisis = 2
>>> new_alex = {k:v*crisis for k, v in alex.items()}
>>> print(new_alex)
{'money': 80, 'salary': 100, 'saving': 120, 'debt': 40}