![](/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.