优雅的方式来填充python中的变量字典

时间:2018-05-06 06:03:40

标签: python

我正在寻找一种优雅的更通用的方法来填充带有变量的字典:

np.arange(n)

是否有更通用的方法而不在引号中使用变量名?

2 个答案:

答案 0 :(得分:3)

如果报价是问题,那怎么样?

fruit = 'apple'
vegetable = 'potato'

dic = dict(
    fruit = fruit,
    vegetable = vegetable
)

答案 1 :(得分:1)

可能不是一个非常优雅的解决方案,但您可以使用locals()检索变量,然后将它们转换为字典。

fruit = 'apple'
vegetable = 'potato'
dic = {key:value for key, value in locals().items() if not key.startswith('__')}

这导致{'vegetable': 'potato', 'fruit': 'apple'}

但是,我认为更好的选择是传递变量名称并创建this answer中提供的字典:

def create_dict(*args):
  return dict({i:eval(i) for i in args})

dic = create_dict('fruit', 'vegetable')

编辑:使用eval()很危险。有关详细信息,请参阅this answer