使用Python 2.7
现有list
:列和相同主机名的多个条目:xlist
Index([u'id', u'last_checkin', u'name'], dtype='object')
{'last_checkin': <DateTime '20180411T14:28:18' at 7f0639d26d88>, 'id': 1000017017, 'name': 'linux1v'}
{'last_checkin': <DateTime '20180411T17:18:30' at 7f0639d26dd0>, 'id': 1000019428, 'name': 'linux1v'}
{'last_checkin': <DateTime '20180411T17:18:52' at 7f0639d26e18>, 'id': 1000019430, 'name': 'linux1v'}
{'last_checkin': <DateTime '20180411T17:24:55' at 7f0639d26e60>, 'id': 1000019437, 'name': 'linux1v'}
{'last_checkin': <DateTime '20180411T17:21:18' at 7f0639d26ea8>, 'id': 1000019443, 'name': 'linux1v'}
{'last_checkin': <DateTime '20180411T17:30:26' at 7f0639d26ef0>, 'id': 1000019453, 'name': 'linux1v'}
新list
:zlist
for i in xlist:
zhostname = i.get('name')
#print zhostname
if zhostname not in zlist:
zlist.append(i)
在第一个list
中,同一主机有多个条目,日期不同last_checkin
和/或id
。对于新list
我正在尝试在主机名尚不存在时添加到list
。但新的list
似乎是第一个list
的精确副本。它就像它不检查新列表中的主机名。我不关心任何条目的last_checkin
日期或id
。
如果我只检查主机的名称,它如何验证条目?
即:
[if zhostname not in zlist:
zlist.append(i)]
因此,当它在zlist中查找主机名时,它是否也验证了其他列,并根据整行看到它是不同的?
希望这不清楚是泥浆。
我的目标是让列表中没有重复的主机名条目,无论id
还是last_checkin
。
答案 0 :(得分:0)
问题是zhostname只是一个字符串,因此当您使用zhostname not in zlist
将其与Index对象进行比较时,字符串zhostname将永远不会匹配zlist中的索引。
我建议使用主机名作为键的字典。 https://docs.python.org/3/tutorial/datastructures.html#dictionaries
checkins = dict()
for i in xlist:
zhostname = i.get('name')
if zhostname not in checkins:
checkins[zhostname] = i