Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.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_Data Structures - Fatal编程技术网

在Python中,哪种类型的数据结构允许快速搜索并最有效?

在Python中,哪种类型的数据结构允许快速搜索并最有效?,python,data-structures,Python,Data Structures,我有一个文本文件,其中列出了10000000个YouTube视频ID,如下所示: 9bZkp7q19f0 t4H_Zoh7G5A 9bZkp7q19f0 etc... videoID , viewCount, count, etc 9bZkp7q19f0, 1895378471, 10000 t4H_Zoh7G5A, 512345678, 10000 我打开文件,获取YouTube视频ID,然后查找,查看其统计数据: {API_KEY}对于第一个视频(Psy江南风格),API调用返

我有一个文本文件,其中列出了10000000个YouTube视频ID,如下所示:

9bZkp7q19f0
t4H_Zoh7G5A
9bZkp7q19f0
etc...
videoID    ,  viewCount, count, etc
9bZkp7q19f0, 1895378471, 10000
t4H_Zoh7G5A,  512345678, 10000
我打开文件,获取YouTube视频ID,然后查找,查看其统计数据: {API_KEY}对于第一个视频(Psy江南风格),API调用返回:

  "viewCount": "1895378471",
  "likeCount": "8110831",
  "dislikeCount": "976065",
  "favoriteCount": "0",
  "commentCount": "5100187"
我还计算自定义值,例如每个视频包含在文件中的次数,每次递增一次

我需要将所有这些信息记录到某种类型的Python数据结构中,如下所示:

9bZkp7q19f0
t4H_Zoh7G5A
9bZkp7q19f0
etc...
videoID    ,  viewCount, count, etc
9bZkp7q19f0, 1895378471, 10000
t4H_Zoh7G5A,  512345678, 10000
由于VideoID经常在输入文件中重复,因此我不仅要在数据结构中添加新行,还需要能够找到现有行,并增加count的值

我认为像“videoID”、“count”这样的文本实际上不必在数据结构中,只要我知道每列代表什么,二维数组就可以了

这个问题的重点是我试图决定哪种类型的数据结构最好。性能至关重要

我必须能够通过videoID键快速确定数据结构中是否已经存在该行,因此如果我能够索引第一列,那将是理想的


什么类型的Python数据结构可以实现这一点?

使用videoID作为键在dict中存储viewCount和TimePreferred的元组。更新每个条目将以固定时间运行


对于额外的数据,请等到将数据放入数据库后再获取。在你数数的时候把东西弄得乱七八糟是没有意义的。

一份字典清单就可以了。但是,为了获得最佳性能,我会使用cpickle(pickle的更快版本)将字典列表存储在“pickle”文件中


我首先将其编码为直接使用SQL数据库,然后跳过中间步骤。然后确定性能是否太差,并进行优化。