オブジェクトのタイプを判別するために「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
音楽の先生に、ルールを正しく破る方法を知っている限り、ルールを破っても大丈夫だと言われたことがあります。これは、私にはそれらのケースの 1 つに思えます。このビットのコードを実装するためのより Pythonic な方法について提案がある人はいますか?
サンプル入力:
key_map = {'symbol':'APPL', 'price':698.38'}
上記のサンプルでは、文字列であるため APPL を引用しますが、フロートであるため 698.38 は引用しません。
よろしく