用另一个字典的值除字典的值 python
我有一个字典,叫做 dict1,格式如下:
{0: 301, 1: 410, 2: 289}
我还有另一个字典,叫做 dict2:
{0: 5307, 2: 4925}
我想根据键的对应关系,把 dict2 的值除以 dict1 的值。比如说,5307 会被 301 除,因为它们的键都是 0。有没有什么建议?
3 个回答
0
遍历每个项目,直到最小字典的长度为止。然后把这些值添加到另一个字典中,叫做 values
。
>>> dict1 = {0: 301, 1: 410, 2: 289}
>>>
>>> dict2 = {0: 5307, 1: 4925}
>>>
>>> length = {len(dict1): 'dict1', len(dict2): 'dict2'}
>>> small = min(length)
>>> values = {}
>>>
>>> for k in range(small):
... values[k] = dict1[k]*dict2[k]
...
>>> print values
{0: 1597407, 1: 2019250}
>>>
8
>>> d1 = {0: 301, 1: 410, 2: 289}
>>> d2 = {0: 5307, 2: 4925}
>>> {k: d2[k] / float(d1[k]) for k in d1 if k in d2}
{0: 17.631229235880397, 2: 17.041522491349482}
如果你的Python版本(比如2.6)太旧,无法使用字典推导式,你可以使用
>>> dict((k, d2[k] / float(d1[k])) for k in d1 if k in d2)
{0: 17.631229235880397, 2: 17.041522491349482}
如果你的Python版本甚至比2.6还要旧
>>> dict([(k, d2[k] / float(d1[k])) for k in d1 if k in d2])
{0: 17.631229235880397, 2: 17.041522491349482}
在Python3中,你不需要调用float
这个函数
>>> {k: d2[k] / d1[k] for k in d1 if k in d2}
{0: 17.631229235880397, 2: 17.041522491349482}
1
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如,有人可能会在使用某个库时,发现它的某些功能没有按照预期工作。这种情况可能会让人感到困惑,因为我们可能不知道问题出在哪里。
通常,解决这类问题的第一步是仔细检查代码,看看有没有拼写错误或者逻辑上的问题。我们还可以查阅相关的文档,看看有没有遗漏的步骤或者需要注意的地方。
如果自己解决不了,可以去一些编程社区,比如StackOverflow,向其他人寻求帮助。在提问时,最好把自己的代码和遇到的问题描述清楚,这样别人才能更好地理解你的情况,并给出有效的建议。
总之,遇到问题时不要着急,慢慢分析,寻找解决方案,或者向他人请教,通常都能找到答案。
def divide(dividends, divisors):
ret = dict()
for key, dividend in dividends.items():
ret[key] = dividend/divisors.get(key, 1)
return ret