嗨我在Python中有这样的大数据集:
data=[[2105,90],
[2115,100],
[2125,110],
[2135,120],
[2145,130],
[2155,140],
[2200,110],
[2115,109],
[2155,142]]
我想要一个数据来自最后一次出现的结果。在上面的例子中,我想要2115 = 109和2155 = 142:
data=[[2105,90],
[2115,109],
[2125,110],
[2135,120],
[2145,130],
[2155,142],
[2200,110]]
答案 0 :(得分:3)
您可以将data
放入字典中:
>>> data
[[2105, 90], [2115, 100], [2125, 110], [2135, 120], [2145, 130], [2155, 140], [2200, 110], [2115, 109], [2155, 142]]
>>> dict(data)[2115]
109
>>> dict(data)[2155]
142
词典具有唯一键。随着从列表中添加更多条目,现有键的值将得到更新。这会导致您最后一次出现。
答案 1 :(得分:0)
回答上述两个陈述。我有3组带有数据的文件。每组大约有一百万个文件。在上面的例子中,我有来自fileset1的6个值,来自fileset2的1个值和来自fileset3的1个值。使用字典的提示,解决方案将是这样的(我在正则表达式匹配时获取数据):
value={}
for j in ['*1981*.txt','*1990*.txt','*1991*.txt']:
files=glob.glob(j)
files.sort()
for file in files:
inFile=open(file, 'r')
for line in inFile:
if cregexp2.match(line):
a=cregexp2.findall(line)[0]
value[a[0]]=a[1]
这是一个有效但需要一些时间的解决方案。是否有人有更好的方法?
答案 2 :(得分:-1)
您可以使用Red Black BST's存储您的信息。这样,您只需要遍历少量节点。这在大多数情况下都很有用(因为树会分成两半)。