关于使用“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,因为它是一个浮点数。
此致
答案 0 :(得分:3)
我认为你可能会追求的是:
value = repr(v)
此外,你的下半场从不使用value
。
答案 1 :(得分:1)