我有一个字典d
数组,可以通过解析JSON文件获得:d = r.json()
假设d
然后包含
d = [
{'change':'112','end_time':'2020-05-12','hostname':'a,b,c,d,e','ref':'345','start_time':'202-04-2020'},
{'change':'182','end_time':'2020-05-12','hostname':'a1,b1,c1,d1,e1','ref':'325','start_time':'202-04-2020'},
{'change':'122','end_time':'2020-05-12','hostname':'g,h,i,j,k','ref':'315','start_time':'202-04-2020'},
{'change':'112','end_time':'2020-05-12','hostname':'o,t1,h1,e4,n7','ref':'345','start_time':'202-04-2020'},
]
所有主机名都互不相同的地方,然后如何执行
这样的搜索if hostname=='a1':
print change (i.e 182)
答案 0 :(得分:1)
您需要遍历列表,将主机名分成一个列表,然后检查要搜索的主机名是否存在于列表中。
hostname = 'a1'
for row in d:
hostnames = row['hostname'].split(',')
if hostname in hostnames:
print(row['change'])
答案 1 :(得分:0)
首先,您有很多json结构错误:
d=[{'change':'112','end_time':'2020-05-12','hostname':'a,b,c,d,e','ref':'345','start_time':'202-04-2020'},
{'change':'182','end_time':'2020-05-12','hostname':'a1,b1,c1,d1,e1','ref':'325','start_time':'202-04-2020'},
{'change':'122','end_time':'2020-05-12','hostname':'g,h,i,j,k','ref':'315','start_time':'202-04-2020'},
{'change':'112','end_time':'2020-05-12','hostname':'o,t1,h1,e4,n7','ref':'345','start_time':'202-04-2020'}]
hostname='a1'
for row in d:
arr = row['hostname'].split(",")
if hostname in arr:
print(row['change'])
#parse all the keys for learning.
for row in d:
for k in row.keys():
if k == "hostname":
arr = row[k].split(",")
for s in arr:
#print(s)
if s =='a1':
row['change'] = '777'
print(d)
之后,使用反向来重新排列json中的元组。 玩得开心!
答案 2 :(得分:0)
解决该问题的Python方法(使用理解)也是最简单的。
# for your a1 example
change_a1 = [i['change'] for i in d
if 'a1' in i['hostname']]
对于任意搜索,只需将其包装为一个函数
def find_change(host):
change = [i['change'] for i in d
if host in i['hostname']]
return change