我有两个字典,我想比较hosts字典中的srvuid和backup字典中的srvuidorg的值。你知道吗
这是主机:
hosts = {}
for d in data['servers']['server']:
srvhostname = d['hostname']
srvuuid = d['uuid']
hosts[srvhostname] = srvuuid
这是备份:
backup = {}
for u in backup_list['storages']['storage']:
srvuuidorg = u['origin']
backup_status = u['state']
backup[srvuuidorg] = backup_status
我提取机器主机名,然后检查hosts字典中是否存在此主机名,并使用srvuid获取输出
hostname = gethostname()
print(hostname)
for srvhostname in hosts:
if srvhostname != hostname:
continue
if srvhostname == hostname:
print(srvhostname + " : " + hosts[srvhostname])
break
else:
print("There is no matching hostname or uuid.")
最后我要比较srvuid和srvuidorg。下面的代码不工作,这意味着执行时没有输出:
for srvuuidorg in backup:
if srvuuidorg != srvuuid:
continue
if srvuuidorg == srvuuid:
print("Status for " + srvuuidorg + " is " + backup_status)
break
else:
print("No maching uuid found.")
我应该如何比较这本词典中的两个值,或者我应该改变主题的方法,使用不同于比较词典的方法?你知道吗
您不需要在dict上循环以查看键是否存在,查找时间是
O(1)
:我想你可能想要的是:
这将打印存储在备份字典的srvuidorg键上的值。我认为您遇到的问题是,您使用的是以前代码块中的backup\u status的旧值,而不是backup[srvuidorg]dict和key上存储的backup\u status的正确值。你知道吗
但是,没有必要循环。你可以做:
如果srvuuidorg==srvuid(即备份字典中存在srvuid键),这将打印存储在备份字典中srvuid键上的值。那也许是更好的方法。希望有帮助!你知道吗
相关问题 更多 >
编程相关推荐