[英]Comparing & updating list values inside of dictionaries
dict1 = {
"domain1": ["53/tcp,open,domain", "80/tcp,open,http"],
"domain2": ["22/tcp,open,ssh", "25/tcp,open,smtp", "80/tcp,open,http",
"443/tcp,open,https"],
"domain3":["22/tcp,open,ssh"]}
我想将dict2
与dict1
进行比较,并检查是否有新键或值(这是开放端口的列表),如果是,则更新dict1
dict2 = {
"domain3":["22/tcp,open,ssh","443/tcp,open,https"],
"domain4":["80/tcp,open,http", "443/tcp,open,https"],
"domain5":["80/tcp,open,http", "443/tcp,open,https"]}
我做的任务,即第一部分通过比较发现任何新的密钥dict2
与dict1
键及是否有任何新的密钥检查dict2
和更新dict1
。
new_item = {}
for i in dict2.keys():
if i not in dict1.keys():
new_item[i] = dict2[i]
dict1[i] = dict2[i]
print("NEW DOMAINS FOUND : ",new_item)
print(dict1) ## UPDATED with New Domains Found
这是输出:
NEW DOMAINS FOUND : {
'domain4': ['80/tcp,open,http', '443/tcp,open,https'],
'domain5': ['80/tcp,open,http', '443/tcp,open,https']}
{'domain1': ['53/tcp,open,domain', '80/tcp,open,http'],
'domain2': ['22/tcp,open,ssh', '25/tcp,open,smtp', '80/tcp,open,http',
'443/tcp,open,https'],
'domain3': ['22/tcp,open,ssh'],
'domain4': ['80/tcp,open,http', '443/tcp,open,https'],
'domain5': ['80/tcp,open,http', '443/tcp,open,https']}
我需要帮助解决该dict2的值与dict1比较任务的第二部分,如果有任何新的价值dict2
然后更新这些值dict1。
如果你看一下dict2[domain3]
和dict1[domain3]
有在新的价值dict2[domain3]
这一点,现在dict1[domain3]
应该得到这些新的值更新。
我想要将dict2
与dict1
比较并更新值/键的输出:
dict1
{'domain1': ['53/tcp,open,domain', '80/tcp,open,http'],
'domain2': ['22/tcp,open,ssh', '25/tcp,open,smtp', '80/tcp,open,http',
'443/tcp,open,https'],
'domain3': ["22/tcp,open,ssh", "443/tcp,open,https"],
'domain4': ['80/tcp,open,http', '443/tcp,open,https'],
'domain5': ['80/tcp,open,http', '443/tcp,open,https']}
如果您需要更多信息或有疑问,请留下评论,我将更新问题。
如果列表内元素的顺序不重要,则可以使用以下命令:
dict3 = {}
for k, v in dict2.items():
dict3[k] = list(set(dict1.get(k, []) + v))
结果dict3
:
{'domain3': ['443/tcp,open,https', '22/tcp,open,ssh'],
'domain5': ['80/tcp,open,http', '443/tcp,open,https'],
'domain4': ['80/tcp,open,http', '443/tcp,open,https']}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.