[英]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.