创建一个名称与列表中项目名称相同的变量

时间:2018-12-20 09:02:01

标签: python python-3.x

出于好奇只是一个愚蠢的问题。

让我们说有一个元素为

的列表
fruits_lst = ['apples','oranges','bananas','guavas']

现在可以创建单独的独立字典,但使用名称作为列表中元素的名称吗?

所需结果:

apples=dict()
oranges=dict()
bananas=dict()
guavas=dict()

我知道可以通过查看元素的名称来轻松地做到这一点,但是我想要实现的是,程序在某种程度上通过迭代选择了元素名称,然后创建了具有相同名称的空字典。可能吗?请引导我通过。.

3 个答案:

答案 0 :(得分:5)

使用dict代替globals

不建议使用全局变量。字典更干净,更容易维护。例如,使用dictionary comprehension

fruits_lst = ['apples', 'oranges', 'bananas', 'guavas']

d = {fruit: {} for fruit in fruits_lst}

然后通过d['apples']d['oranges']等访问特定的内部词典。

请参见this answer来解释为什么这样做有用,而请参见here来作为另一个示例。

答案 1 :(得分:2)

Python中的Evrythin是字典!甚至是范围! 您可以使用globals()

fruits_lst = ['apples','oranges','bananas','guavas']
globals().update({name : dict() for name in fruits_lst})
apples["foo"] = 10
print(apples)

结果:

{'foo': 10}

答案 2 :(得分:0)

这是一个简短的方法,但是让我警告您,这不是定义变量的好方法。

fruits_lst = ['apples','oranges','bananas','guavas']

for fruit in fruits_lst:
    globals()[fruit] = dict()

现在您可以直接访问它们,

>>> apples
{}
>>> oranges
{}

以此类推...