Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么替换方法是添加更多元素而不是替换现有元素?_Python - Fatal编程技术网

Python 为什么替换方法是添加更多元素而不是替换现有元素?

Python 为什么替换方法是添加更多元素而不是替换现有元素?,python,Python,我正在尝试制作一个代码,根据字典将一个字母转换为另一个字母。例如,如果它在字符串中找到字母“o”,它将更改为“e”。我提出的方法在技术上可行,但出于某种原因,仍然添加了更多元素,不幸的是,我无法理解。(Python初学者) 代码如下: dict1 = {"o":"e", "p":"l"} text = "op" text2 = "" for key,value in dict1

我正在尝试制作一个代码,根据字典将一个字母转换为另一个字母。例如,如果它在字符串中找到字母“o”,它将更改为“e”。我提出的方法在技术上可行,但出于某种原因,仍然添加了更多元素,不幸的是,我无法理解。(Python初学者) 代码如下:

dict1 = {"o":"e", "p":"l"}
text = "op"
text2 = ""
for key,value in dict1.items():
    y = text.replace(key,value)
    text2 +=y
print(text2)

您正在执行按键更新并将其附加到空字符串。只用

dict1 = {"o":"e", "p":"l"}
text = "op"
for key,value in dict1.items():
    text = text.replace(key,value)
print(text)
您的
y
text2
值:

  • y='ep'
    ->
    text2=''+'ep'='ep'
  • y='ol'
    ->
    text2='ep'+'ol'='epol'

  • 在每次迭代中打印(y)
    ,看看你有什么。见CaptainTrojan的答案解决了你的直接问题。有关更一般的解决方案,请参见示例,在更一般的情况下,这将不起作用,但是,在这种情况下,某些替换可能会在以后再次被替换。@Thierrylahuille这是对OP代码的最小更新。如果他们想修正算法逻辑,我会迭代文本字符,而不是一次更新整个文本的字符,但是嘿。