用字典中已有键的大写值填充字典

2 投票
2 回答
3385 浏览
提问于 2025-04-17 17:40

我有一个字典变量 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()])

这个代码会遍历字典中所有的键值对,然后添加一个对应的大写键值对。

撰写回答