有没有办法在多维数组的第一项中搜索项目?

时间:2019-03-28 23:05:47

标签: python

我正在使用SQL将数据从表添加到多维数组

由于同一数据有多个,所以我希望仅在数组中尚未添加的情况下才能添加它,这就是我的代码。实际上,它工作正常,除了我希望附加row [1]和row [2]并在彼此独立的2d数组中一起提供帮助,但是当我尝试执行此操作时,我收到一条错误消息,指出它已退出范围

    c.execute("SELECT Subject_name, Unit_Number, Unit_title, Topic_title FROM topics WHERE Subject_name = '%s'"%(str(subjectnames[choosenotes-1])))
    x=0
    unitnames = []
    for row in c.fetchall():
        if row[1] in unitnames:
            pass
        elif row[1] not in unitnames:
            unitnames.append(row[1])
            unitnames.append(row[2])
        else:
            print("Error")
        x=x+1

此后打印阵列时,我得到['1','Motion,Energy and Matter','2','Electricity and light','3','Oscillations and nuclei','4',当我想要[['1','运动,能量和物质'],['2','电和光'],['3'时,'领域和选项','5','实践检查'] ,“振荡和原子核”],['4','场和选项'],['5','实际检查']]。

2 个答案:

答案 0 :(得分:1)

由于您要从表中添加数据,因此我假设您在这里谈论的是二维结构(您未指定它是Python数组还是列表或其他东西)。

如果要测试每一行:

for row in my_array:
    if x in row: 
        # add it.

附录

如果您想知道某个值是否是序列上的 first 元素,则应使用:

for row in my_array:
    if x != row[0]:       # Check x against row's first item. 
        row.insert(0, x)  # insert x as first item of the row.

以下:

sequence[0] == value

不同于:

value in sequence

最后一个检查value是否在序列中,无论位置如何。

答案 1 :(得分:0)

您可以使用类似于以下内容的方法简单地遍历数组数组。这将检查条目是否在2d子数组的第一个元素中的任何一个中。如果它不在任何子数组的第一个元素中,那么它将触发逻辑,以便您可以将其添加到数组中。

found = False
searchParameter = 'j'
array = [['x', 'y' , 'z'], ['a', 'b', 'c']]
for subArray in array:
    if searchParameter == subArray[0]:
        found = True

if(not found):
    print("Adding it to the array!..")
    #your_append_action_here.