Python:如果头存在,则使用变量

时间:2016-06-23 22:04:07

标签: python

我正在使用一个包含许多列(超过1000个)的HDUList。这些列与外部代码拟合的星系中的星系特征有关。列应以'ser'或'dev'结尾。但是,有些列太长,名称被切断(例如:LOGRE_F3mF2_F850LPse或eLOGRE_F3mF2_F850LPs)

我正在定义用于对数据执行各种操作的函数。我很难系统地选择我想要的列,因为名称都不同。

现行程序(与问题有关的部分):

def function(xaxisroot,yaxisroot,otheroptions):
  xaxis = xaxisroot + '_avg_f850lpser' 
  yaxis = yaxisroot + '_F' + str(region[0]) + 'mF' + str(region[1]) + '_f850lpser'

function('logre','logre')

由于列实际上是:'LOGRE_avg_F850LPse' 我得到错误(例子):

KeyError: "Key 'logre_avg_f850lpser' does not exist."

2 个答案:

答案 0 :(得分:0)

尝试使用hasattr(object,property)检测密钥是否确实存在。否则,请尝试重构您的词典,这样您就不会有这样奇怪的名字。

答案 1 :(得分:0)

看起来名字的截止值为20个字符。如果是这种情况,您可以尝试以下方式:

key = root + '_avg_f850lpser' 
key = key[:20]

这可以确保您的key始终为20个字符或更少,并在字符串的右端进行修剪(因为那里会发生切断)。

如果20个字符不在截止(始终)发生的位置,则您需要显示更多截止列密钥的示例。