[英]How can I rename a dictionary within a program?
我要求程序的用户输入他/她想调查的数据集的数量,例如三个数据集。 因此,我应该创建三个字典(数据集_1,数据集_2和数据集_3)来保存各种参数的值。 由于我事先不知道用户想要调查的数据集数量,因此我必须在程序中创建并命名字典。
显然,Python不允许我这样做。 创建字典后,我无法重命名字典。
我曾尝试使用os.rename(“ oldname”,“ newname”),但这仅在计算机硬盘上存储了文件的情况下有效。 我无法使其与仅存在于程序中的对象一起使用。
number_sets = input('Input the number of datasets to investigate:')
for dataset in range(number_sets):
init_dict = {}
# create dictionary name for the particular dataset
dict_name = ''.join(['dataset_', str(dataset+1)])
# change the dictionary´s name
# HOW CAN I CHANGE THE DICTIONARY´S NAME FROM "INIT_DICT"
# TO "DATASET_1", WHICH IS THE STRING RESULT FOR DICT_NAME?
我想最后
数据集_1 = {}数据集_2 = {}
等等。
您不需要(不需要)。 保留数据集列表。
datasets = []
for i in range(number_sets):
init_dict = {}
...
datasets.append(init_dict)
然后,您将获得datasets[0]
, datasets[1]
等,而不是datasets[1]
dataset_1
, datasets[1]
dataset_2
等。
在循环内部,将init_dict
设置为每个迭代顶部的全新空目录,而不会影响先前迭代中添加到datasets
的dict
。
如果要创建这样的变量,可以使用全局变量
number_sets = 2
for dataset in range(number_sets):
dict_name = ''.join(['dataset_', str(dataset+1)])
globals() [dict_name] = {}
print(dataset_1)
print(dataset_2)
但是,这不是一个好习惯,因此,如果需要保留几个相似的变量,则最好避免创建列表。
您可以使用单个字典,然后将所有数据集添加为字典:
all_datasets = {}
for i in range(number_sets):
all_datasets['dataset'+str(i+1)] = {}
然后,您可以使用以下方法访问数据:
all_datasets['dataset_1']
这个问题在许多不同的变体中被问过很多次(例如, 这是最突出的问题之一)。 答案总是一样的:
从字符串创建python变量名称并非易事,而且在大多数情况下不是一个好主意。
更简单,易用,安全和可用的方法是只使用另一本词典。 关于字典的很酷的事情之一: 任何对象都可以成为键/值。 因此,可能性几乎是无限的。 在您的代码中,可以通过dict理解轻松地完成此操作:
number_sets = int(input('Input the number of datasets to investigate:')) # also notice that you have to add int() here
data = {''.join(['dataset_', str(dataset + 1)]): {} for dataset in range(number_sets)}
print(data)
>>> 5
{'dataset_1': {}, 'dataset_2': {}, 'dataset_3': {}, 'dataset_4': {}, 'dataset_5': {}}
之后,可以通过data[name_of_dataset]
轻松访问这些词典。 那就是应该怎么做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.