[英]Delete a key-value pair from a list of dictionary having field of same name
newlist= [{'row': 4, 'col': 4}, {'row': 4, 'col': 5}, {'row': 4, 'col': 6}, {'row': 4, 'col': 7}, {'row': 4, 'col': 8}, {'row': 4, 'col': 9}, {'row': 4, 'col': 10}, {'row': 5, 'col': 4}, {'row': 5, 'col': 5}, {'row': 5, 'col': 6}, {'row': 5, 'col': 7}, {'row': 5, 'col': 8}, {'row': 5, 'col': 9}, {'row': 5, 'col': 10}, {'row': 6, 'col': 4}, {'row': 6, 'col': 5}, {'row': 6, 'col': 6}, {'row': 6, 'col': 7}, {'row': 6, 'col': 8}, {'row': 6, 'col': 9}, {'row': 6, 'col': 10}, {'row': 7, 'col': 4}, {'row': 7, 'col': 5}, {'row': 7, 'col': 6}, {'row': 7, 'col': 7}, {'row': 7, 'col': 8}, {'row': 7, 'col': 9}, {'row': 7, 'col': 10}, {'row': 8, 'col': 11}, {'row': 9, 'col': 11}]
I want to delete the key value pair having row 4,col 5 how to do that我想删除第 4 行第 5 列的键值对,该怎么做
for lines in newlist :
if lines['row'] == 4and lines['col'] == 5:
print("delete")
del added['row']['col']
trie above code but not worked.it shows an error TypeError: list indices must be integers or slices, not str尝试上面的代码但没有工作。它显示错误TypeError: list indices must be integers or slice, not str
The requirement is for below code要求是针对以下代码
row=4
cols=4
l=9
m=11
added=[]
while row <= l:
print("row", row)
m = 11
cols= 4
while cols <= m:
print("column",cols)
for li in newlist:
print("li", li)
if li['row'] == row and li['col']!= cols:
added.append({
'row':row,
'col':cols,
# 'id':li['id']
})
print(row, "", cols)
print("new")
print("lop",added)
new_added = [x for x in added if x['row'] != row or x['col'] != cols]
cols = cols + 1
row = row + 1
so I require only所以我只需要
newlist= [{'row': 4, 'col': 11}, {'row': 5, 'col': 11},
{'row':'6','col:'11'} ,{'row':'7','col:'11'}{'row': 8, 'col': 4},
{'row': 8, 'col': 5}, {'row': 8, 'col': 6}, {'row': 8, 'col': 7},
{'row': 8, 'col': 8}, {'row': 8, 'col': 9}, {'row': 8, 'col': 10},
{'row': 9, 'col': 4}, {'row': 9, 'col': 5}, {'row': 9, 'col': 6},
{'row': 9, 'col': 7}, {'row': 9, 'col': 8}, {'row': 9, 'col': 9},
{'row': 9, 'col': 10}]
so I want output as above所以我想要上面的 output
newlist 3=out [{'row': 4, 'col': 4}, {'row': 4, 'col': 5}, {'row': 4, 'col': 6}, {'row': 4, 'col': 7}, {'row': 4, 'col': 8}, {'row': 4, 'col': 9}, {'row': 4, 'col': 10}, {'row': 4, 'col': 11}, {'row': 5, 'col': 4}, {'row': 5, 'col': 5}, {'row': 5, 'col': 6}, {'row': 5, 'col': 7}, {'row': 5, 'col': 8}, {'row': 5, 'col': 9}, {'row': 5, 'col': 10}, {'row': 5, 'col': 11}, {'row': 6, 'col': 4}, {'row': 6, 'col': 5}, {'row': 6, 'col': 6}, {'row': 6, 'col': 7}, {'row': 6, 'col': 8}, {'row': 6, 'col': 9}, {'row': 6, 'col': 10}, {'row': 6, 'col': 11}, {'row': 7, 'col': 4}, {'row': 7, 'col': 5}, {'row': 7, 'col': 6}, {'row': 7, 'col': 7}, {'row': 7, 'col': 8}, {'row': 7, 'col': 9}, {'row': 7, 'col': 10}, {'row': 7, 'col': 11}, {'row': 8, 'col': 4}, {'row': 8, 'col': 5}, {'row': 8, 'col': 6}, {'row': 8, 'col': 7}, {'row': 8, 'col': 8}, {'row': 8, 'col': 9}, {'row': 8, 'col': 10}, {'row': 8, 'col': 11}, {'row': 9, 'col': 4}, {'row': 9, 'col': 5}, {'row': 9, 'col': 6}, {'row': 9, 'col': 7}, {'row': 9, 'col': 8}, {'row': 9, 'col': 9}, {'row': 9, 'col': 10}, {'row': 9, 'col': 11}]
try via list comprehension:尝试通过列表理解:
checker=[{'row':x,'col':y} for x in {x['row'] for x in newlist} for y in range(4,12)]
#created a list of dict by the given range provided by you
out=[x for x in checker if x not in newlist]
#only get those elements of checker list which are not present in newlist
output of out: output 出:
[{'row': 4, 'col': 11},
{'row': 5, 'col': 11},
{'row': 6, 'col': 11},
{'row': 7, 'col': 11},
{'row': 8, 'col': 4},
{'row': 8, 'col': 5},
{'row': 8, 'col': 6},
{'row': 8, 'col': 7},
{'row': 8, 'col': 8},
{'row': 8, 'col': 9},
{'row': 8, 'col': 10},
{'row': 9, 'col': 4},
{'row': 9, 'col': 5},
{'row': 9, 'col': 6},
{'row': 9, 'col': 7},
{'row': 9, 'col': 8},
{'row': 9, 'col': 9},
{'row': 9, 'col': 10}]
Use the remove method for lists:对列表使用 remove 方法:
for dic in newList:
if dic['row'] == 4 and dic['col'] == 5:
newList.remove(dic)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.