Python检查列表中的现有元素并查找下一个值

时间:2018-03-11 05:15:32

标签: python python-2.7

这是命令输出:

 ab1.1 something
 ab2.1 something
 ab3.1 something
 ab4.1 something

我有以下代码来检查现有条目。

  list1 = []
  for line in command_output.split("\n"):
      if line.stratswith("ab"):
          list1.append(line.split()[0])

检查ab4.1是否存在于list1中,如果不打印ab4.1则不存在并使用它。

如果ab4.1已经存在,请检查下一个可用值ab5.1。如果list1中没有,打印ab5.1在list1中不存在并使用它,依此类推。

要检查元素不存在,我将使用以下条件

  if "ab4.1" not in list1:
      print "Use ab4.1"
  else:
      check another available value.

请帮我找出另一个可用值。

3 个答案:

答案 0 :(得分:1)

你应该循环数字以找到可用的数字。要有效地检查,您应该将这些单词存储在set

command_output = """ ab1.1 something
 ab2.1 something
 ab3.1 something
 ab4.1 something"""


first_words = set()
for line in command_output.split("\n"):
    first_words.add(line.split()[0])

for j in xrange(4, len(first_words) + 5):
    use = 'ab{}.1'.format(j)
    if not use in first_words:
        break
else:
    raise RuntimeError, 'impossible!'

print "using {}".format(use)

如果你愿意,你可以使用理解来缩短这一点:

first_words = {line.split()[0].strip() for line in command_output.split("\n")}    
use = 'ab{}.1'.format((j for j in xrange(4, len(first_words) + 5)
                       if not 'ab{}.1'.format(j) in first_words).next())

print "using {}".format(use)

答案 1 :(得分:0)

如下:

lister = [adit1,adit2,adit3] count = len(lister) + 1 lister.join('adit' + str(count))

答案 2 :(得分:0)

如果我对你的问题不对,你可以尝试这样: -

ls = ['a','b','c']
list1 = []
for i in ls:
    if i not in list1:
        print("Use {}".format(i))