gpt4 book ai didi

python - 将字典作为参数传递给 python 中的函数,其中参数是函数本身

转载 作者:太空宇宙 更新时间:2023-11-03 20:00:26 27 4
gpt4 key购买 nike

我目前正在使用 Python3 和plotnine 库。

我正在尝试使用plotnine 和字典作为参数。这是我正在尝试做的一个简单的工作示例:

import pandas as pd
import plotnine as p9

iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')

plot = p9.ggplot(data=iris, mapping=p9.aes(x='petal_width')) +\
p9.geom_density(fill='#6bd1e8', alpha=0.5) +\
p9.theme(axis_title_x = p9.element_text(size = 20),\
axis_text_x = p9.element_text(size=10, angle = 45))

print(plot)

在这里,我想在“p9.theme”函数中使用我的字典,但这些函数参数是函数本身(“p9.element_text”)。

现在我有一个简单的字典:

theme:
axis_title_x:
size: 20
axis_text_x:
size: 10
angle: 45

目前,如果我执行以下操作,它会部分起作用:

p9.theme(axis_title_x = p9.element_text(**conf['axis_title_x']),\
axis_text_x = p9.element_text(**conf['axis_text_x']))

但我想要这样的东西:

p9.theme(**conf['theme'])

我尝试更改字典的结构,但无法使其工作。有谁知道如何执行此操作或解决方法吗?

谢谢

最佳答案

你的字典里也有传递函数。问题是函数 **kwargs 在创建时无法在同一字典中引用。所以有两种方法。有两个字典:

def test(a, b, c=None):
print(a, b, c)

def foo(x):
return f'!{x}'

sub_conf = {
'foo': {'x': 2}
}

conf = {
'test': {'a': 1, 'b': foo(**sub_conf['foo'])}
}

test(**conf['test'])

或者分步创建字典,以便您可以引用现有对象。

conf = {
'foo': {'c': 2}
}

conf['test'] = {'a': 1, 'b': foo(**conf['foo'])}

关于python - 将字典作为参数传递给 python 中的函数,其中参数是函数本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59273481/

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