在 Python 中一次更改多个元素

Posted

技术标签:

【中文标题】在 Python 中一次更改多个元素【英文标题】:Changing multiple elements at once in Python 【发布时间】:2013-03-08 11:27:16 【问题描述】:

我想知道如何编写一个算法来一次切换多个字母。我正在寻找一种在(右手打字)Y或U或I或O或P中更改每个(左手打字)Q或W或E或R或T的方法,而不会弄乱空格或大写字母(实际上是使用 shift 键)文本,并将其作为整个键盘的“镜像”(因此它还包括标点符号)。

不管怎样,我要跑题了。如果我只知道如何将特定符号更改为其他特定符号,而无需编写带有 112 个 if/elif 语句的意大利面条代码(总符号我必须交换 * 4,因为反之亦然和移位值)/

是否有可能获取一个字符串中的所有符号并将它们与另一个符号中的其他符号交换,同时仍然不会弄乱句子中的空格?

for i in sentence:
    if i == 'Q':
        i = 'Y'
    elif i == 'q':
        i = 'y'
    elif i == # etc...

太长了。

【问题讨论】:

看看str.translatestring.maketrans 这可能是真的。谢谢。 【参考方案1】:
>>> import string
>>> t = string.maketrans("Qq","Yy")
>>> "QqQq".translate(t)
'YyYy'

【讨论】:

【参考方案2】:

使用字典:

In [7]: strs="aAb BcD"

In [8]: dic='a':'q','A':'w','b':'E','B':'r','c':'A','D':'y'

In [9]: "".join(dic.get(x,x) for x in strs)
Out[9]: 'qwE rAy'

【讨论】:

以上是关于在 Python 中一次更改多个元素的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中一次混合多个类?

python 在Python中一次测试多个标志的不同方法

如何在Python中一次运行多个while循环[重复]

如何在for循环中一次访问两个元素而不会在python中重复?

如何在Xcode的Interface Builder中一次编辑多个约束

在 python for 循环中一次运行 3 个变量。