我有一个词典列表和一个主词典。 词典列表具有以下格式。为值分配一个在程序中动态变化的变量。
list_dict = [{'url': url_value , 'title' : title_value}, {'url': url_value , 'title' : title_value}]
main_dict = {"execution_time": "2017-06-05", "target_url": "http://www.bloomberg.com", "data": [{ "url" : url1}, { "url" : url2}], "name": "Michael", "occupation": "software"}
如果main_dict中数据下的任何url值(url1或url2)与list_dict中任何字典中的url_value值相同,我想从数据中删除该字典。
输出:假设url_value是url1,那么:
main_dict = {"execution_time": "2017-06-05", "target_url": "http://www.bloomberg.com", "data": [{ "url" : url2}], "name": "Michael", "occupation": "software"}
我考虑过使用dict理解,但是我尝试的一切都没有用。我希望得到一个起点或任何指导。
答案 0 :(得分:0)
这应该可以解决问题:
my_list = [list_dict_data['url'] for list_dict_data in list_dict]
delete_list = []
for i in range(len(main_dict['data'])):
if main_dict['data'][i]['url'] in my_list:
delete_list.append(i)
for i in delete_list:
del main_dict['data'][i]
它的作用是:
尝试优化它,尽管它非常粗糙。
答案 1 :(得分:0)
您可以尝试以下方法:
XmlHttpRequest
不是删除>>> list_dict = [{'url': "url1" , 'title' : "title_value1"}, {'url': "other_url" , 'title' : "title_value2"}]
>>> main_dict = {"execution_time": "2017-06-05", "target_url": "http://www.bloomberg.com", "data": [{ "url" : "url1"}, { "url" : "url2"}], "name": "Michael", "occupation": "software"}
>>> S = set(d["url"] for d in list_dict)
>>> main_dict["data"] = [d for d in main_dict["data"] if d["url"] not in S]
>>> main_dict
{'execution_time': '2017-06-05', 'target_url': 'http://www.bloomberg.com', 'data': [{'url': 'url2'}], 'name': 'Michael', 'occupation': 'software'}
的元素,而是要重新创建没有匹配网址的列表:
main_dict["data"]
中list_dict
的不同网址; S
过滤d
中的字典main_dict["data"]
。关于命名的注意事项:尝试根据 content 而不是 type 命名变量。
d["url"] not in S
是词典的列表(我可以看到),但是我想立即知道这些词典中的内容。如果您接受url +标题构成页面,那么list_dict
会更好。但是您应该指定为什么这些页面在此列表中(例如web_pages
或其他)dead_link_pages
是一本字典(非常明显,但信息不多):像main_dict
这样的字典更好。同样,更好的规范是有益的:task
,update_task
、? retrieve_task
替换为S
!看看,这更具可读性:
page_urls