Python 我正在尝试使用此代码查找列表中缺少的成员..但它没有';行不通
在第一次迭代后,该值似乎没有改变,即它仍然是Python 我正在尝试使用此代码查找列表中缺少的成员..但它没有';行不通,python,Python,在第一次迭代后,该值似乎没有改变,即它仍然是(1,1),我可以看到需要做什么,以便它在列表中报告缺少的项,即在本示例列表中它是['a',(1,3)]。通常,代码以['a',(1,1)]开头,用于检测列表中缺少的代码,因此它按照您要放置的序列跟随每个项目 list = [['a', (1,1)], ['a', (1,2)], ['a', (1,4)], ['a', (1,5)]] for i in list: print "the i is ", i print i[0] #
(1,1)
,我可以看到需要做什么,以便它在列表中报告缺少的项,即在本示例列表中它是['a',(1,3)]
。通常,代码以['a',(1,1)]
开头,用于检测列表中缺少的代码,因此它按照您要放置的序列跟随每个项目
list = [['a', (1,1)], ['a', (1,2)], ['a', (1,4)], ['a', (1,5)]]
for i in list:
print "the i is ", i
print i[0] # 'a'
print i[1] # (1, 1)
n = 'a'
v = (1,1)
#n = re.search(r'[a-z]', i[0])
#v = (v[0], (v[1] + 1))
print "just", i[1]
print "trying ", v
for j in i:
if (j[0] != n):
v = (1, 1)
n = i[0]
if (i[1] != v):
print v
raise ValueError, '[%s, %s] is missing' %(i[0], (i[1][0], i[1][1]-1))
v = (v[0], (v[1] + 1))
在for循环之外(并且您也不希望将v=(1,1)
放入if(j[0]!=n)
语句中)。否则,每次都会将其设置回(1,1)
埃塔:尽管如此,这不是解决问题的好办法。为什么不这样做呢:
v = (1,1)
我看到这个问题反复提出,所以这里有一个完整的例子
for i in range(1, 6):
if ["a", (1, i)] not in list:
raise ValueError, '["a", (1, %s)] is missing' % i
输出是
def ListToDict(l):
d = {}
for itm in l:
if itm[0] not in d:d[itm[0]]=[]
d[itm[0]].append(itm[1])
for key in d:
itm = d[key]
if isinstance(itm,(list,tuple)) and len(d[key])>0 and isinstance(d[key][0],(tuple,list)):
d[key] = ListToDict(d[key])
return d
def ValidateSequences(d):
if isinstance(d,(tuple,list)):
return sorted(d) == range(min(d),max(d)+1)
elif isinstance(d,dict):
r = {}
for key in d:
r[key] = ValidateSequences(d[key])
return r
my_list = [['a', (1,1)], ['a', (1,2)], ['a', (1,4)], ['a', (1,5)]]
d = ListToDict(my_list)
print "Validated:",ValidateSequences(d)
my_list.append(["a",(1,3)])
d = ListToDict(my_list)
print "Revalidated:",ValidateSequences(d)
这段代码相当复杂。它实际上想做什么?我试过了,它表明ValueError:[a,(1,0)]丢失了。如果我的列表=['a',(1,2)],['a',(1,3)],['a',(1,4)],['a',(1,5)],它应该报告['a',(1,1)]丢失了。如果我的列表=['a',(1,1)],['a',(1,3],['a',(1,4)],它应该报告['a',(1,2)],等等。我正在尝试测试缺失的项目该列表不应该局限于['a',(1,5)]…它可以有['a',(2,1)],['a',(2,2)],['a',(3,1)]['a',(3,2)]['a',(3,4)]等等。。然而,它们都是按顺序出现的,因此这些项目也应该进行测试
Validated: {'a': {1: False}}
Revalidated: {'a': {1: True}}