[英]How to Remove Something in a List in a Dictionary in Python
這個問題並沒有太多,但是我在其他任何地方都找不到。
如何搜索Python詞典中列表中的內容。
這是一個例子:
mydict = {"aaron":["1","4","10\n","3","6"] , "paul":["7","4\n","6","15"]}
# Additional code here
print(mydict)
>>> {"aaron":["1","4","10","3","6"] , "paul":["7","4","6","15"]} #Notice the '\n' has disappeared...
我需要知道什么代碼可以使我搜索字典中每個鍵上值列表的每個部分,從而刪除字典中任何部分內的“ \\ n”。
任何幫助將不勝感激,謝謝:)-亞倫
無需在列表中搜索“ \\ n”以將其刪除,只需將strip
應用於所有列表。
In [1604]: mydict = {"aaron":["1","4","10\n","3","6"] , "paul":["7","4\n","6","15"]}
In [1605]: for i in mydict.keys():
......: mydict[i] = map(str.strip, mydict[i])
......:
In [1606]: mydict
Out[1606]: {'aaron': ['1', '4', '10', '3', '6'], 'paul': ['7', '4', '6', '15']}
您可以遍歷字典,獲取值為值的列表,然后遍歷列表中的值,並在不使用換行符的情況下重置它們。 然后重置密鑰列表
mydict = {"aaron":["1","4","10\n","3","6"] , "paul":["7","4\n","6","15"]}
print mydict
for key, value in mydict.iteritems():
for ind, item in enumerate(value):
value[ind] = item.strip()
print mydict
{'aaron': ['1', '4', '10\n', '3', '6'], 'paul': ['7', '4\n', '6', '15']}
{'aaron': ['1', '4', '10', '3', '6'], 'paul': ['7', '4', '6', '15']}
>>> mydict = {"aaron":["1","4","10\n","3","6"] , "paul":["7","4\n","6","15"]}
>>> mydict = {k:[element.strip() for element in mydict.get(k)] for k in mydict}
>>> mydict
{'paul': ['7', '4', '6', '15'], 'aaron': ['1', '4', '10', '3', '6']}
如果要遍歷字典,可以使用:
for key,value in mydict.items():
print (key,value)
為了從字符串中刪除“ \\ n”,您可以迭代並檢查字符串是否包含“ \\ n”,然后將該子字符串刪除:
for (key, value) in mydict.items():
for item in value:
item = item.replace('\n','')
In [1]: mydict = {"aaron":["1","4","10\n","3","6"] , "paul":["7","4\n","6","15"]}
In [2]: for k,L in mydict.items():
...: for i,elem in enumerate(L):
...: L[i] = elem.strip()
...:
In [3]: mydict
Out[3]: {'aaron': ['1', '4', '10', '3', '6'], 'paul': ['7', '4', '6', '15']}
OP的代碼建議使用Python 3,他確實喜歡另一種理解,所以:
mydict = {k: list(map(str.strip, v)) for k, v in mydict.items()}
要么
mydict = {k: list(map(str.strip, mydict[k])) for k in mydict}
In [11]: mydict = {"aaron":["1","4","10\n","3","6"] , "paul":["7","4\n","6","15"]}
In [12]: dict(map(lambda (k,v): (k, [item.replace("\n","") for item in v]), mydict.iteritems()))
Out[12]: {'aaron': ['1', '4', '10', '3', '6'], 'paul': ['7', '4', '6', '15']}
如果只有\\ n,則可以通過以下代碼完成:
for i in mydict:
mydict[i]=list(map(lambda s:str(int(s)),mydict[i]))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.