python:从嵌套列表中删除时保留某些值
我有一个嵌套列表,如下所示:
my_list = [['id_1', {'frame':[{'door': 'window', 'closet':'pinches'}], 'utterance':'sentence number 1', 'speaker':'silver'}],
['id_2',{'frame':[{'door': 'window', 'closet':'pinches'},{'door': 'new_door', 'closet':'hinges'}], 'utterance':'sentence number 2', 'speaker':'silver'}],
['id_3', {'frame':[{'door': 'window', 'closet':'pins'}], 'utterance':'sentence number 3', 'speaker':'gold'}]]
如果列表包含值“gold”,我想从 my_list 中删除该列表,因此我执行了以下操作。
removed =[i for i in [item[1] for item in my_list] if not(i['speaker'] == 'gold')]
print(removed)
#output: [{'frame': [{'door': 'window', 'closet': 'pinches'}], 'utterance': 'sentence number 1', 'speaker': 'silver'}, {'frame': [{'door': 'window', 'closet': 'pinches'}, {'door': 'new_door', 'closet': 'hinges'}], 'utterance': 'sentence number 2', 'speaker': 'silver'}]
但我想保留“id_number”,所以我想要的输出是:
my_new_list = [['id_1', {'frame':[{'door': 'window', 'closet':'pinches'}], 'utterance':'sentence number 1', 'speaker':'silver'}],
['id_2',{'frame':[{'door': 'window', 'closet':'pinches'},{'door': 'new_door', 'closet':'hinges'}], 'utterance':'sentence number 2', 'speaker':'silver'}]]
I have a nested list as follows:
my_list = [['id_1', {'frame':[{'door': 'window', 'closet':'pinches'}], 'utterance':'sentence number 1', 'speaker':'silver'}],
['id_2',{'frame':[{'door': 'window', 'closet':'pinches'},{'door': 'new_door', 'closet':'hinges'}], 'utterance':'sentence number 2', 'speaker':'silver'}],
['id_3', {'frame':[{'door': 'window', 'closet':'pins'}], 'utterance':'sentence number 3', 'speaker':'gold'}]]
I would like to remove a list from my_list if it contains the value 'gold', so I have done the following.
removed =[i for i in [item[1] for item in my_list] if not(i['speaker'] == 'gold')]
print(removed)
#output: [{'frame': [{'door': 'window', 'closet': 'pinches'}], 'utterance': 'sentence number 1', 'speaker': 'silver'}, {'frame': [{'door': 'window', 'closet': 'pinches'}, {'door': 'new_door', 'closet': 'hinges'}], 'utterance': 'sentence number 2', 'speaker': 'silver'}]
But I would like to preserve the 'id_number', so my desire output is:
my_new_list = [['id_1', {'frame':[{'door': 'window', 'closet':'pinches'}], 'utterance':'sentence number 1', 'speaker':'silver'}],
['id_2',{'frame':[{'door': 'window', 'closet':'pinches'},{'door': 'new_door', 'closet':'hinges'}], 'utterance':'sentence number 2', 'speaker':'silver'}]]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
试试这个:
Try this:
我认为你只需要“切换”2个内联循环:
I think you just need to "switch" the 2 inline loops: