从现有列表的单个列创建新列表?

时间:2018-04-13 23:25:27

标签: python python-2.7 list

使用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'}

listzlist

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

1 个答案:

答案 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