gpt4 book ai didi

python - 以相同方式处理列表和字典 - 默认情况下

转载 作者:太空宇宙 更新时间:2023-11-04 05:36:12 26 4
gpt4 key购买 nike

我有一个函数可以与 listdict 一起使用:

def row2tuple (row, md):
return (row[md.first], row[md.next])

并且如果 row 是一个 list 那么 md.firstmd.next 将是 ints,如果 rowdict,它们将是 strings。

但是,如果 rowdict 并且缺少字段,则会导致错误。如果我使用 get 方法:

def row2tuple (row, md):
return (row.get(md.first), row.get(md.next))

它对 dict 完全符合我的要求,但对 list 根本不起作用。

当然可以

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/简洁的方法来做到这一点?

最佳答案

按照 this question 中的描述编写一个“安全查找”函数并用它来进行查找。了解 LookupErrorKeyErrorValueError 的父类(super class)很有用,因此您可以捕获列表或列表中缺失的索引通过捕获 LookupError 的字典:

def safeLookup(container, index):
try:
return container[index]
except LookupError:
return None

def makeTuple(container, indices):
return tuple(safeLookup(container, index) for index in indices)

然后:

>>> makeTuple([1, 2, 3], [0, 2, 4])
(1, 3, None)
>>> makeTuple({'x': 1, 'y': 2, 'z': 3}, ['x', 'z', 'hoohah'])
(1, 3, None)

关于python - 以相同方式处理列表和字典 - 默认情况下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35513881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com