所以我正在尝试添加一个新的“名称”作为字典中现有键的别名。
例如:
dic = {"duck": "yellow"}
userInput = raw_input("Type the *name* and *newname* (alias) here:")
#Somecode that allows me to input newname as an alias to "duck"
用户键入两个单词: name 以引用“duck”, newname 指定应指向现有键值的新键。即别名。
因此,当我更改"duck"
的值时,"newname"
也应该更改,反之亦然。
我尝试了很多东西,但无法找到一个好方法。
答案 0 :(得分:5)
此处没有内置功能,但在dict
类型的基础上构建起来很容易:
class AliasDict(dict):
def __init__(self, *args, **kwargs):
dict.__init__(self, *args, **kwargs)
self.aliases = {}
def __getitem__(self, key):
return dict.__getitem__(self, self.aliases.get(key, key))
def __setitem__(self, key, value):
return dict.__setitem__(self, self.aliases.get(key, key), value)
def add_alias(self, key, alias):
self.aliases[alias] = key
dic = AliasDict({"duck": "yellow"})
dic.add_alias("duck", "monkey")
print(dic["monkey"]) # prints "yellow"
dic["monkey"] = "ultraviolet"
print(dic["duck"]) # prints "ultraviolet"
如果没有别名, aliases.get(key, key)
会返回key
。
删除密钥和别名是留给读者的练习。