['10000381 10007121', '10000381 10008989', '10005169 10008989', '10008989 10023817', '10005169 10043265', '10008989 10043265', '10023817 10043265', '10047097 10047137', '10047097 10047265', '10047137 10047265', '10000381 10056453', '10047265 10056453', '10000381 10060557', '10007121 10060557', '10056453 10060557', '10000381 10066013', '10007121 10066013', '10008989 10066013', '10026233 10066013', '10056453 10066013', '10056453 10070153', '10060557 10070153', '10066013 10070153', '10000381 10083798', '10047265 10083798', '10056453 10083798', '10066013 10083798', '10000381 10099969', '10056453 10099969', '10066013 10099969', '10070153 10099969', '10083798 10099969', '10056453 10167029', '10066013 10167029', '10083798 10167029', '10099969 10167029', '10182073 10182085', '10182073 10182177', '10182085 10182177', '10000381 10187233', '10056453 10187233', '10060557 10187233', '10066013 10187233', '10083798 10187233', '10099969 10187233', '10167029 10187233', '10007121 10200685', '10099969 10200685', '10066013 10218005', '10223905 10224013']
我需要找到每个ID对的每个实例,并将其索引到新列表中。目前我有几行代码可以为我完成此操作。但是,我的列表超过200万行,随着我处理更多数据,它会变得更大。
此时,预计完成时间约为2天。
我真的只需要一种更快的方法来解决这个问题。
我在Jupyter Notebooks上工作(在Mac笔记本电脑上)
def compiler(idlist):
groups = []
for i in idlist:
groups.append([index for index, x in enumerate(idlist) if x == i])
return(groups)
我也尝试过:
def compiler(idlist):
groups = []
for k,i in enumerate(idlist):
position = []
for c,j in enumerate(idlist):
if i == j:
position.append(c)
groups.append(position)
return(groups)
我想要的是这样的:
'10000381 10007121': [0]
'10000381 10008989': [1]
'10005169 10008989': [2, 384775, 864173, 1297105, 1321798, 1555094, 1611064, 2078015]
'10008989 10023817': [3, 1321800]
'10005169 10043265': [4, 29113, 864195, 1297106, 1611081]
[5, 864196, 2078017]
'10008989 10043265': [6, 29114, 384777, 864198, 1611085, 1840733, 2078019]
'10023817 10043265': [7, 86626, 384780, 504434, 792690, 864215, 1297108, 1321801, 1489784, 1524527, 1555096, 1595763, 1611098, 1840734, 1841280, 1929457, 1943701, 1983362, 2093820, 2139917, 2168437]
等等。
等等。
其中每个括号中的数字是该对id在idlist中的索引。
基本上,我希望它能查看一对id值(即“10000381 10007121”),并运行列表并找到该对的每个实例,并记录此对出现的列表中的每个索引。我需要为列表中的每个项目都执行此操作。在较短的时间内完成。
unique
。链接 - SheldoreO(n^2)
性能。 您可以使用groups = collections.defaultdict(list)
,然后执行for index, item in enumerate(idlist): groups[item].append(index)
,这是O(n)
。 - a_guest