Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多个if和else语句_Python_Matplotlib - Fatal编程技术网

Python 多个if和else语句

Python 多个if和else语句,python,matplotlib,Python,Matplotlib,我正在尝试使用python中的matplotlib绘制一些图 然后我有一个循环: structure = ['CTV', 'ITV', 'PTV', 'Index'] 现在,voi在结构中的循环中正在进行一些工作,比如从.txt文件中获取数据、子绘图和对绘图进行格式化,然后我得到轴格式。对于每个结构,都会有一些不同的轴尺寸,这些尺寸不是由matplotlib自动实现的。 所以我想做的是: plt.axis([0, 180, 75 if voi=='PTV' else 92 if voi=='C

我正在尝试使用python中的matplotlib绘制一些图

然后我有一个循环:

structure = ['CTV', 'ITV', 'PTV', 'Index']
现在,voi在结构中的循环中正在进行一些工作,比如从.txt文件中获取数据、子绘图和对绘图进行格式化,然后我得到轴格式。对于每个结构,都会有一些不同的轴尺寸,这些尺寸不是由matplotlib自动实现的。 所以我想做的是:

plt.axis([0, 180, 75 if voi=='PTV' else 92 if voi=='CTV' else 15 if voi=='ITV' else 0 if voi=='Index', 82 if voi=='PTV' else 97 if voi=='CTV' else 60 if voi=='ITV' else 40 if voi=='Index'])
我知道这看起来很糟糕,而且也不起作用。但我想你明白了。对于每个结构,需要不同的轴尺寸。如果我只使用:

75 if voi=='PTV' else 92
例如,它是有效的。但是如果使用多个else语句,那么它就不会。那么我该怎么做才是最简单的方法呢?我写的那个可能看起来很糟糕,但写起来很容易。但如上所述,它不是这样工作的

提前感谢。

使用字典:

poss_voi = {'Index':40,'PTV':75,'ITV':15, 'CTV': 92 etc....}
然后,只需进行查找:

plt.axis([0, 180, poss_voi[voi]])
如果需要默认值,请使用dict.get:

 plt.axis([0, 180, poss_voi.get(voi, some_default_value)])