Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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 向列表中的对象追加唯一标识符时出现问题_Python_List_Unique - Fatal编程技术网

Python 向列表中的对象追加唯一标识符时出现问题

Python 向列表中的对象追加唯一标识符时出现问题,python,list,unique,Python,List,Unique,我有一个大的数据文件,并希望将唯一标识符附加到重复出现的名称(尽管有18k个名称)。我尝试了几种方法,包括idfun,但还没有找到有效的解决方案。目前,这是我尝试过的事情之一。 这只是一个例子,因为我知道y在每个for循环之后重置,并且不是迭代的(生成器) 我看到了这个问题的答案: def f(seq, idfun=None): # Order preserving return list(_f(seq, idfun)) def _f(seq, idfun=None): ''' O

我有一个大的数据文件,并希望将唯一标识符附加到重复出现的名称(尽管有18k个名称)。我尝试了几种方法,包括idfun,但还没有找到有效的解决方案。目前,这是我尝试过的事情之一。 这只是一个例子,因为我知道y在每个for循环之后重置,并且不是迭代的(生成器)

我看到了这个问题的答案:

def f(seq, idfun=None): # Order preserving
  return list(_f(seq, idfun))

def _f(seq, idfun=None):  
  ''' Originally proposed by Andrew Dalke '''
  seen = set()
  if idfun is None:
    for x in seq:
      if x not in seen:
        seen.add(x)
        yield x
  else:
    for x in seq:
      x = idfun(x)
      if x not in seen:
        seen.add(x)
        yield x
但我真的不知道如何实现它

一种解决方案是使用函数。给定相同的输入,哈希总是返回相同的输出,但决不会为不同的输入提供相同的输出。因此,重复出现的单词被赋予相同的ID

>>> import hashlib
>>> for word in ['beer','gin','beer']: print word, hashlib.md5(word).hexdigest()
... 
beer 3e1867f5aee83045775fbe355e6a3ce1
gin a6c72983f8a0a002155d67b12b345629
beer 3e1867f5aee83045775fbe355e6a3ce1

非常感谢你!我不知道你能做到。然而困难在于我想让每个重复出现的单词都有一个不同的ID(这样我就可以把它们区分开来)。实际上,我通过使用简单的+j/j+1解决了自己的问题。
>>> import hashlib
>>> for word in ['beer','gin','beer']: print word, hashlib.md5(word).hexdigest()
... 
beer 3e1867f5aee83045775fbe355e6a3ce1
gin a6c72983f8a0a002155d67b12b345629
beer 3e1867f5aee83045775fbe355e6a3ce1