您如何使用变量来引用多个词典中的一个,以便您可以编辑该词典

How do you use a variable to reference one of multiple dictionaries so that you can edit that one dictionary

我的程序中使用了三个词典,需要能够向这三个词典中的任何一个添加或删除一个项目。如何通过使用变量告诉程序将项目添加到哪个字典?我不能简单地输入“DictName[NewKey] = NewValue”,因为它取决于用户选择的字典。

示例:

Dict1 = {"Key1": "Value1"}
Dict2 = {"Key2": "Value2"}
Dict3 = {"Key3": "Value3"}

var = input("Please choose a dictionary") #Dict1, Dict2, or Dict3

print("Add item to", var)
var[Key4] = Value 4

我的问题是我无法使用变量来调用字典并更改编辑它。

使用字典中的字典:

super_dict = {
    "Dict1": {"Key1": "Value1"},
    "Dict2": {"Key2": "Value2"},
    "Dict3": {"Key3": "Value3"}
}

然后您就可以通过这种方式访问​​它们了:

var = input(f"Please choose a dictionary: {', '.join(super_dict.keys())}") #Dict1, Dict2, or Dict3

print("Add item to", var)
super_dict[var]["Key4"] = "Value 4"

字典中的字典怎么样?例如,如果用户输入字符串“Dict1”,您可以这样 de-reference 该特定词典:

Dict1 = {"Key1": "Value1"}
Dict2 = {"Key2": "Value2"}
Dict3 = {"Key3": "Value3"}

dict_of_dicts = {
    "Dict1": Dict1,
    "Dict2": Dict2,
    "Dict3": Dict3,
}

print(dict_of_dicts["Dict1"]["Key1"])
Value1

通过新指令管理它们

Dict1 = {"Key1": "Value1"}
Dict2 = {"Key2": "Value2"}
Dict3 = {"Key3": "Value3"}

dicts = {
    "1": Dict1,
    "2": Dict2,
    "3": Dict3,
}
var = input("Please choose a dictionary") # 1 or 2 or 3

print("Add item to", var)

dicts[var][key4] = Value 4

像以前的答案一样使用新的词典词典效果很好,但如果词典数量不变,您可以使用简单的 if-elif-else 语句。 当然,如果有不同数量的字典,那么最好使用字典的字典。 if-elif-else 语句示例如下:

Dict1 = {"Key1": "Value1"}
Dict2 = {"Key2": "Value2"}
Dict3 = {"Key3": "Value3"}

var = input("Please choose a dictionary") #Dict1, Dict2, or Dict3

print("Add item to", var)
if var == "Dict1":
    # do what you want to Dict 1 here
elif var == "Dict2":
    # do what you want to Dict 2 here
else:
    # do what you want to Dict 3 here

这种globals()方法在动态创建变量名方面效果很好。但它看起来有点复杂。 Dictionary of Dictionary 方法对您的程序来说是一种更简洁的方法。您可以在 How can you dynamically create variables?

上阅读更多内容
Dict1 = {"Key1": "Value1"}
Dict2 = {"Key2": "Value2"}
Dict3 = {"Key3": "Value3"}

var = input("Please choose a dictionary: ") # 1 or 2 or 3
globals()[f"Dict{var}"] [f"Key{int(var)+1}"]= f"value{int(var)+1}"
print(globals()[f"Dict{var}"])