关于使用“hasattr”或“isinstance”来确定对象类型的争论很多。但是,我有一种情况,我试图构建一个查询numexpr
,我需要引用字符串,而不是其他值。我打算使用以下代码:
def get_query(key_map):
"""
Generate an equality query, based on key/value
pair in key_map
"""
stmnt = ""
for k,v in key_map.items():
value = '"%s"' % v if isinstance(v, str) else v
if not stmnt:
# first equality in statement
stmnt = "'(%s == %s)" % (k,value)
else:
stmnt += " & (%s == %s)" % (k,value)
if stmnt:
# close statement
stmnt += "'"
return stmnt
我也考虑hasattr
过使用:
value = '"%v"' % v if hasattr(v,'lower') else v
我曾经有一位音乐老师告诉我,只要你知道如何正确地打破规则,就可以打破规则。对我来说,这似乎是其中之一。有没有人建议用一种更 Pythonic 的方式来实现这段代码?
样本输入:
key_map = {'symbol':'APPL', 'price':698.38'}
在上面的示例中,我想引用 APPL,因为它是一个字符串,而不是 698.38,因为它是一个浮点数。
问候