我想要一个函数,它通常接受 X 类型的参数,其中 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')
我的问题是,如何在这三种类型之间进行调度?
编辑:字符串将被解释为标量,而不是列表/可迭代。元组将被解释为可迭代的。
编辑 2:我想要鸭式打字,而不是严格打字。