python - 将列表和字典解压到同一参数中

标签 python

def foo(l=None, d=None):
    return bar(*l, **d) # eg. bar(1, 2, 3, a=a, b=b)

输入:

l = [1, 2, 3]
d = {'a': a, 'b': b}

foo(l=l, d=d)

lNone时出现问题,即。进行此调用:

foo(d={'a':a})

我应该在 foo 中更改什么才能很好地处理列表和字典上的 NoneType

这很丑陋,必须有比这更好的方法:

def foo(l=None, d=None):
    if l is not None and d is not None:
        return bar(*l, **d)
    if l is not None:
        return bar(*l)
    if d is not None:
        return bar(**d)

最佳答案

您可以使用与空迭代器短路:

def foo(l=None, d=None):
    return bar(*(l or ()), **(d or {}))

或者使其更具可读性,尽管更冗长:

def foo(l=None, d=None):
    l = l or ()
    d = d or {}
    return bar(*l, **d)

关于python - 将列表和字典解压到同一参数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45545880/

相关文章:

python - 根据重复项更改 Pandas 数据框列的值

Python Pandas 选择指数大于 x 的指数

python - KeyError : 'PNG' while using pytesseract. 图像到数据

python - 如果列表包含大小不等的元组,如何迭代?

python - 正则表达式的字符串掩码和偏移量

python - 如何测试区域是否重叠 (Python)

python - 我想将 .csv 文件转换为 Numpy 数组

python - Bokeh 数据表宽度

python - 如何与开源项目共享我的环境变量?

linux - 如何将 "tar"shell 命令翻译成 Python