用字典中已有键的大写值填充字典
我有一个字典变量 d
,里面存储的是小写字母和小写字母之间的对应关系。现在我想把这些小写字母对应的大写字母也存起来,形成一个新的键值对。
这个字典里有这些内容:
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'
我该怎么做呢?
2 个回答
2
如果你要处理很多值,自己创建一个字典类可能会更好。这个字典类会对传入的所有项目使用 .lower
方法,也就是说,它会把所有的字母都变成小写。这样做的好处是:
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'
你就不需要对两个相似的值使用两个相似的引用了。
7
使用生成器表达式来更新你的字典:
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()])
这个代码会遍历字典中所有的键值对,然后添加一个对应的大写键值对。