我有一个d
包含字符-字符键值对的 dict 变量。所有这些字符都是小写的。我也想将相应的大写字符映射存储为键值对。
字典由这些条目组成
d[q]='a'
d[w]='s'
d[e]='d'
d[r]='f'
d[t]='g'
我也想拥有这个
d[Q]='A'
d[W]='S'
d[E]='D'
d[R]='F'
d[T]='G'
我怎样才能做到这一点 ?
我有一个d
包含字符-字符键值对的 dict 变量。所有这些字符都是小写的。我也想将相应的大写字符映射存储为键值对。
字典由这些条目组成
d[q]='a'
d[w]='s'
d[e]='d'
d[r]='f'
d[t]='g'
我也想拥有这个
d[Q]='A'
d[W]='S'
d[E]='D'
d[R]='F'
d[T]='G'
我怎样才能做到这一点 ?
使用生成器表达式来更新您的字典:
d.update({k.upper(): v.upper() for k, v in d.iteritems()})
或者,对于 Python 3:
d.update({k.upper(): v.upper() for k, v in d.items()})
或者,对于 Python 2.6 及更早版本:
d.update([(k.upper(), v.upper()) for k, v in d.iteritems()])
这会遍历所有键值对,d
然后添加相应的大写键值对。
如果您将有很多值,最好创建自己的字典类,该类调用.lower
传递给getitem的所有项目,如下所示:
class CustomDict(dict):
def __getitem__(self, key):
if key.lower() == key:
return super(CustomDict, self).__getitem__(key.lower()).lower()
else:
return super(CustomDict, self).__getitem__(key.lower()).upper()
d = CustomDict({"a" : "q" , "s":"w" , "d":"e", "f": "r"})
print d["A"] #prints 'Q'
print d["s"] #prints 'w'
这使得您不必对 2 个相似值有 2 个相似的引用。