Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 比较列表、字典或集合的另一种解决方案?I';我什么都试过了_Python_Sql - Fatal编程技术网

Python 比较列表、字典或集合的另一种解决方案?I';我什么都试过了

Python 比较列表、字典或集合的另一种解决方案?I';我什么都试过了,python,sql,Python,Sql,我有一个sql数据库中的数据,其中每一行都有一个唯一的标识符和一组用逗号分隔的代码。我想做的是制作一个列表,其中每个标识符每行只有一个代码。我在导入数据后执行了以下操作: rows = cur.fetchall() for row in rows: (pid, codelist) = row codes = set() for x in codelist.split(','): if len(x.strip()) > 0: codes.add(x.strip(

我有一个sql数据库中的数据,其中每一行都有一个唯一的标识符和一组用逗号分隔的代码。我想做的是制作一个列表,其中每个标识符每行只有一个代码。我在导入数据后执行了以下操作:

rows = cur.fetchall()
for row in rows:
    (pid, codelist) = row
    codes = set()
  for x in codelist.split(','):
     if len(x.strip()) > 0: codes.add(x.strip())
  for code in codes:
     print (pid, code)
现在,我想创建两个独立的数据列表,从事件前到事件后,最后,创建一个列表,其中只包含不在时间点a中的唯一标识符和代码。我尝试比较集合、列表、字典,但我将获得两者通用的标识符和代码,或者只包含事件后唯一的代码,然而,它在某种程度上忽略了post事件特有的一些其他代码。我怀疑我的数据结构不正确,或者我的for循环有问题,但这与我想要的最接近,但由于某些原因缺少数据:

rows = cur.fetchall()
rows2 = cur.fetchall()
for row in rows:
   (pid, codelist) = row
   codes = set()
   preEvent= OrderedDict()
   for x in codelist.split(','):
       if len(x.strip()) > 0: codes.add(x.strip())
    for code in codes:
        preEvent[pid]=code
        a=list(preEvent.items())
    for row2 in rows2:
        (pid, codelist) = row2
        codes2= set()
        postEvent= OrderedDict()
        for x in codelist.split(','):
            if len(x.strip()) > 0: codes2.add(x.strip())
        for code in codes2:
            postEvent[pid]=code
            b=list(postEvent.items())
        c=[]
        for i in range(0, len(b)):
         if b[i] not in a:
            c.append(b)
            print(c)
我不知道为什么在集合(b)-集合(a)的其他尝试不起作用,这本来是一个更容易的解决方案。当我这样做的时候,我得到了一堆匹配的重复项,而不是一个只有集合(b)唯一代码的新集合。这可能很容易,但我却不知所措


提前谢谢

假设
是一个普通的
列表
,类似于
元组的
列表

[(10, 'a'), (10, 'b'), (10, 'c'), (20, 'd') ... ]
我猜大概是这样的:

unique_in_rows = [val for val in rows if val not in rows2]

这将迭代
中的所有元素,并检查它是否不在
行2中
。如果该条件为true,则元素将被追加到行中的
unique\u

感谢Nils。由于某种原因,这仍然不起作用。我的列表看起来是这样的:[(100,'401.1')][(100,'441.4')][(100,'244.9')][(100,'244.9')][(100,'250.00')][(100,'244.9')][(100,'401.1')]),但以专栏形式。我试图查看是否只需要将列表展平以查看代码是否有效,但仍然不行。请编辑您的问题并说明输入和所需的输出列表,好吗?