通常、X がスカラー、リスト、または dict のいずれかである型 X の引数を受け取り、他の情報に基づいて、同じキー値を持つ X のリストを返す関数が必要です。
def foo(info, k):
return [bar(item,k) for item in processInfo(info)]
def bar(item, keydata):
# pseudocode follows.
# What we want to do is return an output of parallel type to the input key k,
# using the key data to lookup information from the input item.
if keydata is a scalar:
return item[keydata]
elif keydata is a list:
return [item[k] for k in keydata]
elif keydata is a dict:
return dict((k,item[v]) for (k,v) in keydata.iteritems())
else:
raise ValueError('bar expects a scalar, list, or dict')
私の質問は、3 つのタイプの間でどのように発送できますか?
編集: 文字列は、リスト/反復可能ではなく、スカラーとして解釈されます。タプルは反復可能として解釈されます。
編集2:厳密なタイピングではなく、ダックタイピングが必要です。