我有两个列表:-
influx = [u'mphhos-fnwp-010101-2',
u'mphhos-fnwp-010101-1',
u'mphhos-fnwp-010101-7',
u'mphhos-fnwp-010101-10',
u'mphhos-fnwp-010101-9',
u'mphhos-fnwp-010101-4',
u'mphhos-fnwp-010101-3',
u'mphhos-fnwp-010101-8',
u'mphhos-fnwp-010101-6',
u'mphhos-fnwp-010101-5',
u'mphhos-fnwp-010101-11']
etcd =[u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-4',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-9',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-1',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-10',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-3',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-6',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-7',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-8',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-11',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-2',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-5']
Etcd是父列表,我想比较Etcd的流入量。
1。)我想获取列表中不存在的所有元素并返回它们。
2。)如何通过省略/xymon/fnwp/mphhos/
以上任何一个问题都可以为我解决。
我尝试了很多方法,但是由于格式不同,我没有得到解决方案。
我将通过set(etcd)-set(influx)
来得到答案,但是由于它们的格式不同,所以我得到了列表中的所有项目。
答案 0 :(得分:1)
str.rsplit
[x for x in etcd if x.rsplit('/', 1)[1] not in influx]
根据拉斐尔克的建议
infx = set(influx)
[x for x in etcd if x.rsplit('/', 1)[1] not in infx]
答案 1 :(得分:0)
一种简单的解决方案是删除前缀
for i, char in enumerate(etcd):
char = char.replace('/xymon/fnwp/mphhos/', '')
etcd[i] = char
然后您可以使用set()
找到区别。
答案 2 :(得分:0)
influx = [u'mphhos-fnwp-010101-2',
u'mphhos-fnwp-010101-1',
u'mphhos-fnwp-010101-7',
u'mphhos-fnwp-010101-10',
u'mphhos-fnwp-010101-9',
u'mphhos-fnwp-010101-4',
u'mphhos-fnwp-010101-3',
u'mphhos-fnwp-010101-8',
u'mphhos-fnwp-010101-6',
u'mphhos-fnwp-010101-5',
u'mphhos-fnwp-010101-11']
etcd =[u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-4',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-9',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-1',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-10',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-3',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-6',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-7',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-8',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-11',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-2',
u'/xymon/fnwp/mphhos/mphhos-fnwp-010101-5']
etcd = [x.replace('/xymon/fnwp/mphhos/', '') for x in etcd]
# or using regex
# etcd = [re.sub('/xymon/fnwp/mphhos/', '', x) for x in etcd]
diff = set(etcd) - set(influx)
print(diff)