python-3.x 使用字典作为if语句的要求

ia2d9nvy  于 2023-01-18  发布在  Python
关注(0)|答案(1)|浏览(137)

首先,我很抱歉我可能会问这个问题,如果它已经在别的地方被回答了,我找不到任何解决以下问题的方法:
我想创建一个列表,在其中应用多个约束,但我不想使用数百个if语句,我只想在一个if语句中使用字典来应用需求,也就是说,我想使用字典的键作为需求,使用字典的值作为数据的因子。
让我们看一个小例子:
我想创建一个计数图的数据,其中x/y的范围从[-50,50]开始,步长为1,并且z函数的要求基于if语句:
下面的代码是有效的,但是我添加的需求越多,代码就越长,越难读:

x = np.linspace(-50 , 50, 100)
y = np.linspace(-50 , 50, 100)
z = []
z_0 = 100
for i in x:
   for j in y:
      if i**2 + j**2 <= 10**2:
         z.append(1.9 * z_0)
      elif i**2 + j**2 <= 20**2:
         z.append(1.5 * z_0)
      elif i**2 + j**2 <= 30**2:
         z.append(1.4 * z_0)
      elif i**2 + j**2 <= 40**2:
         z.append(1.05 * z_0)
      else
         z.append(z_0)

这将创建一个在不同位置上高度随z值径向递减的Map。有没有可能用下面的方法来实现这一点呢?我的主要问题是如何分配正确的值。

x = np.linspace(-50 , 50, 100)
y = np.linspace(-50 , 50, 100)
z = []
requirements_dict = {10:1,9, 20:1.5, 30:1.4, 40:1.05}
z_0 = 100
for i in x:
   for j in y:
      if i**2 + j**2 <= (each key of the requirements_dict) :
         z.append( (corresponding value of the requirements dict)   * z_0)
      else
         z.append(z_0)

提前感谢您的帮助,如果这个问题已经问过了,再次表示抱歉。

hfsqlsce

hfsqlsce1#

这就是你要找的吗?
编辑:

import numpy as np

x = np.linspace(-50 , 50, 100)
y = np.linspace(-50 , 50, 100)
z = []
requirements_dict = {10: 1.9, 20: 1.5, 30: 1.4, 40: 1.05}
z_0 = 100
for i in x:
    for j in y:
        for key, value in requirements_dict.items():
            if i**2 + j**2 <= key:
                z.append(value * z_0)
                break
        else:
            z.append(z_0)

相关问题