在Python中将列表中的字符串用作变量名

在Python中将列表中的字符串用作变量名,python,list,Python,List,我有一个字符串元素列表,比如user\u contract=['ZNZ6','TNZ6','ZBZ6'] 我有一个具有嵌套列表结构的数据集,如data=[[1,2,3],[4,5,6],[7,8,9] 我想按照各自的顺序将每个user\u contract字符串指定为每个数据嵌套列表的变量名 我知道我可以通过键入ZNZ6,TNZ6,ZBZ6=data手动完成此操作。我认为这不够灵活,每次在user\u contract中更改名称时,我都必须手动更改这一行 有没有一种方法可以让我利用user\u

我有一个字符串元素列表,比如
user\u contract=['ZNZ6','TNZ6','ZBZ6']

我有一个具有嵌套列表结构的数据集,如
data=[[1,2,3],[4,5,6],[7,8,9]

我想按照各自的顺序将每个
user\u contract
字符串指定为每个
数据
嵌套列表的变量名

我知道我可以通过键入
ZNZ6,TNZ6,ZBZ6=data
手动完成此操作。我认为这不够灵活,每次在
user\u contract
中更改名称时,我都必须手动更改这一行


有没有一种方法可以让我利用
user\u contract
变量将数据分配给它的每个元素?

此代码可以帮助您:

user_contract = ['ZNZ6','TNZ6','ZBZ6']
data = [[1,2,3],[4,5,6],[7,8,9]]
dictionary = dict(zip(user_contract, data))
print(dictionary)
它从两个列表中创建一个字典并打印:

python3 pyprog.py 
{'ZBZ6': [7, 8, 9], 'ZNZ6': [1, 2, 3], 'TNZ6': [4, 5, 6]}

您可以使用字典理解来指定值:

myvars = {user_contract[i]: data[i] for i in range(len(user_contract))}
然后您可以像这样访问这些值

myvars['TNZ6']
> [1, 2, 3]

您可以使用
exec
对表达式求值并动态分配给变量:

>>> names = ','.join(user_contract)
>>> exec('{:s} = {:s}'.format(names, str(data)))

使用字典:太好了,谢谢。这能回答你的问题吗?这是一个非常巧妙的技巧,我只是想知道与熊猫数据帧相比,它的效率如何?