2

我有一个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'

我怎样才能做到这一点 ?

4

2 回答 2

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()])

这会遍历所有键值对,d然后添加相应的大写键值对。

于 2013-03-02T09:49:59.917 回答
2

如果您将有很多值,最好创建自己的字典类,该类调用.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 个相似的引用。

于 2013-03-02T10:34:44.153 回答