【发布时间】:2016-02-19 19:57:33
【问题描述】:
我有一个函数可以同时使用lists 和dicts:
def row2tuple (row, md):
return (row[md.first], row[md.next])
如果row 是list,那么md.first 和md.next 将是ints,如果row 是dict,它们将是strings。
但是,如果 row 是 dict 并且缺少字段,则会导致错误。如果我使用get 方法:
def row2tuple (row, md):
return (row.get(md.first), row.get(md.next))
它完全符合我对dicts 的要求,但它对lists 根本不起作用。
当然可以
def row2tuple (row, md):
if isinstance(row,list):
return (row[md.first], row[md.next])
return (row.get(md.first), row.get(md.next))
但它看起来很丑。
有没有更 Pythonic/简洁的方法来做到这一点?
【问题讨论】:
-
您在第二种方法中没有将任何内容转换为
int? -
您是否还要处理用户确实传递了一个整数,但该整数超出了列表范围的情况?对于您的最后一个示例(使用
get),这仍然会引发错误。 -
@Kasramvd:是的,索引应该是每次解析的
-
@BrenBarn:不,我确实希望在这种情况下出错。
标签: python python-2.7