![](/img/trans.png)
[英]Python converting nested dictionary with list containing float elements as individual elements
[英]Replace elements in list - with a nested list containing said elements (python3)
我正在尝试用包含所述元素的列表替换列表中的元素,例如:
list = ['cow','orange','apple','mango']
to_replace = 'orange', 'apple'
replace_with = ['banana','cream']
所需的 output:
['cow', ['banana', 'cream'], 'mango']
我已阅读此问题1中的答案并尝试了此处提到的 function:
def replace_item(list, to_replace, replace_with):
for n,i in enumerate(list):
if i== to_replace:
list[n]=replace_with
return list
但它什么也没做。 我还尝试了一个基本的相等函数:
list[1:3] = ['banana','cream']
但是,两者都不起作用。 有没有 function 来完成这个? 在我的实际问题中,它是一个循环, list[1:3]
是一个迭代器,即list[i:i+2]
。 我不确定这是否会有所作为。 要替换的项目将始终是连续的。
尝试这个:
List[1:3] = [["banana", "cream"]]
这不起作用的原因是因为当您编写时: List[1:3] = ["banana", "cream"]
您正在用列表替换列表。 换句话说,您将["orange", "apple"]
更改为["banana", "cream"]
。
执行此操作时: List[1:3] = [["banana", "cream"]]
将列表替换为列表中的列表,将["orange", "apple"]
替换为[["banana","cream"]]
,从而将"orange", "apple"
替换为["banana", "cream"]
def replace_item(lst, to_replace, replace_with):
for n,i in enumerate(lst):
if i in to_replace and lst[n+1] in to_replace:
lst[n]=replace_with
lst[n+1] = ""
return [item for item in lst if item]
lst = ['cow','orange','apple','mango']
to_replace = 'orange', 'apple'
replace_with = ['banana','cream']
print (replace_item(lst, to_replace, replace_with))
Output:
['cow', ['banana', 'cream'], 'mango']
首先,不要将您的 var 称为与 object 类型相同的名称。 这是一个坏主意,可能导致代码混乱/错误等。
在您的 function 中,问题本质上是字符串( i
)和列表( lst
)之间的==
运算符永远不会说True
无论 rest。 另外,列表中字符串中的内容与您的字符串中的内容不同。 所以你使用in
而不是==
。
在此之后,如果您不想重复并希望将相邻'orange', 'apple'
替换为单个['banana','cream']
,则需要在迭代时检查lst[n+1]
.
然后你替换lst[n]
,将lst[n+1]
设置为空,并返回一个使用列表推导从空元素中清除的列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.