python 2.7字典将参数传递给.get
我创建了许多函数来帮助我运行当前的程序。在可能的情况下,我会尽可能多地利用这些自定义元素,以保持它们的数量相当合理 切中要害 我写了下面的内容,以允许我在各种字典中搜索结果是列表形式的,即People={'IR1':[65',M',77076],'IR2':[24',M',77077],…} IR=唯一的个人标识符 排名第一的是年龄, 排名第二——性别, 列表中的第三个位置-GP实践代码 要获取我正在使用的每个必要值,请执行以下操作:python 2.7字典将参数传递给.get,python,python-2.7,dictionary,Python,Python 2.7,Dictionary,我创建了许多函数来帮助我运行当前的程序。在可能的情况下,我会尽可能多地利用这些自定义元素,以保持它们的数量相当合理 切中要害 我写了下面的内容,以允许我在各种字典中搜索结果是列表形式的,即People={'IR1':[65',M',77076],'IR2':[24',M',77077],…} IR=唯一的个人标识符 排名第一的是年龄, 排名第二——性别, 列表中的第三个位置-GP实践代码 要获取我正在使用的每个必要值,请执行以下操作: def TestCustom1(Search, Source
def TestCustom1(Search, Source, Offset):
if Search == 'Blank' or Search == 'Missing IRF - MT' or \
Search == 'Missing IRF - source data' or Search is None or \
Search == 'Date out of scope':
CusRet = 'Blank'
elif Source.get(Search) is not None:
CusRet = TestType('CharZ', Source.get(Search)[Offset])
else:
CusRet = 'Missing from look up tbl'
return CusRet
其中:
TestType,评估结果,即如果值为Null,则返回“Blank”。
搜索=查找值,源=字典名称,偏移量=值位置。
我用它来支持大约5种不同的字典
问题:
我有一个非常简单的字典={'AA20':'intra-dural Spine Major 1',…}
在编辑器中使用以下各项时,一切正常:
DictHRG.get('HC08Z')[0:]
u'Intradural Spine Major 1'
但是,当尝试将[0:]传递到我创建的函数中时,出现错误:
TestCustom1('HC08Z', DictHRG, 0:)
SyntaxError: invalid syntax
及
解决方案:
1.我可以编写一个新函数,但正如前面提到的,我正试图保持一个合理的数量
2.对于这个特定的数据集,我可以在代码中使用IF语句,但更愿意使用TestCustom1,因为我需要对所有数据源使用相同的输出:
CusRet = 'Missing from look up tbl'
如果需要,更容易在函数中更改它,而不是返回到这个集合我有50多个数据源
问题:
你能不能同意上面的说法,另外,如果你能给我一些建议,我将不胜感激。我很确定这是我犯的新手错误
非常感谢。您可以在切片中使用偏移:
CusRet = TestType('CharZ', Source.get(Search)[Offset:])
或为偏移量传入一个:
TestCustom1('HC08Z', DictHRG, slice(0))
请注意,0是切片的默认起点
只需使用成员资格测试来测试密钥,即可简化代码:
def TestCustom1(Search, Source, Offset=0):
if Search is None or Search in (
'Blank', 'Missing IRF - MT', 'Missing IRF - source data',
'Date out of scope'):
return 'Blank'
if Search in Source:
return TestType('CharZ', Source[Search][Offset:])
return 'Missing from look up tbl'
其中,假定偏移量为整数,默认为0以从起点开始切片
但是,请注意,函数现在根据匹配返回两种不同的类型;返回字符串或列表。使用异常来传达异常情况。Martijn-谢谢你,我需要稍微调整一下你的解决方案,但至少我现在知道该怎么做了:你应该用小写字母来命名变量,因为大写字母反映类名。看到了吧,但这是我从微软Excel VBA得到的一个坏习惯。一旦我不是python新手,我可能会开始研究它:
def TestCustom1(Search, Source, Offset=0):
if Search is None or Search in (
'Blank', 'Missing IRF - MT', 'Missing IRF - source data',
'Date out of scope'):
return 'Blank'
if Search in Source:
return TestType('CharZ', Source[Search][Offset:])
return 'Missing from look up tbl'