我有一个csv文件,其中一列为十六进制值,这是一些乘积no。像'182666828988‘,'183a2d4e3a12’,我必须采取一个新的产品编号。并检查它是否已经存在,如果我必须更新产品编号的频率。如果没有在数据集中添加一个新行,则使用频率行。在python中最有效的方法是什么,因为我有一个非常大的数据集。
谢谢
发布于 2016-05-24 08:08:02
如果允许使用内存中的数据集,则可以使用Python的defaultdict。如果不存在,它将自动创建零计数的新条目。
from collections import defaultdict
freq = defaultdict(int)
freq['182666828988'] += 1
freq['182666828988'] += 1
freq['183a2d4e3a12'] += 1
print(freq)哪种输出
defaultdict(<class 'int'>, {'182666828988': 2, '183a2d4e3a12': 1})发布于 2016-05-24 08:01:59
如果您的文件可以放入RAM -我认为您可以使用一个简单的python字典来解决这个问题。假设'182666828988‘已经出现了5次,'183a2d4e3a12’2次:
table = {}
table['182666828988'] = 5
table['183a2d4e3a12'] = 2
def fun(x):
if x not in table:
table[x] = 0
table[x] += 1
fun('183a2d4e3a12')
fun('124124124124')
print table{'182666828988':5,'124124124124':1,‘183 a2d4e3a12’:3}
https://stackoverflow.com/questions/37407332
复制相似问题