我在吃一堆半随机的代币。对于每个令牌,我维护了大量的数据(包括一些子集合)。
唯一标记的数量是无限的,但在实践中往往在10万-300,000左右。
我从一个列表开始,并标识了使用Linq查询更新的适当的令牌对象。
public class Model {
public List<State> States { get; set; }
...
}
var match = model.States.Where(x => x.Condition == stateText).SingleOrDefault();
在第一个~30k唯一令牌上,我能够找到并更新1100个
我知道搜索的简单方法是有一个包含字符串的列表,只需执行if string in list,但是它会变慢,而且我听说字典键在大集合中几乎不会因为没有排序而减速。
但是,我不需要任何与项目相关的额外信息,所以做字典只是为了保存键并将值设置为None感觉有点不对。
有什么东西我可以用,像字典键的速度明智,但作为一个列表?
下面是一个简单的例子:
import time, random
totalRange = 100000
searchFor = 5000
#Create a list of 10 million characters
searchableList = []
for i in r
我应该设计一个最佳性能的解决方案来搜索该集合中的项目。
问题是:我有一种类型:
class MyType {
public int Id { get; set; }
public int Sequence{ get; set; }
public string Name { get; set; }
public Enum MyEnum { get; set; }
//.....
}
我有一个包含对象的集合:Collection<MyType>。
我想通过一个特定的成员在这个Collection<MyType>中搜索,例如通过Id搜索
我写了一个脚本,它读取不同的文件,并在大型sdf数据库(每个约4.0 GB )中搜索分子ID。
这个脚本的思想是将id列表(大约287212个分子)中的每个分子从我的原始数据库复制到一个新的数据库中,每个分子只有一个拷贝(在本例中,是遇到的第一个拷贝)。
我写了这个脚本:
import re
import sys
import os
def sdf_grep (molname,files):
filin = open(files, 'r')
filine= filin.readlines()
for i in range(0,len(filine)):
我对Python中list和set的理解主要是: list允许重复,list允许有序信息,list有位置信息。我发现,当我试图搜索一个元素是否在一个列表中时,如果我首先将列表转换为一个集合,运行时会更快。例如,我编写了一段代码,试图在列表中找到最长的连续序列。以从0到10000的列表为例,最长的连续时间是10001。在使用列表时:
start_time = datetime.now()
nums = list(range(10000))
longest = 0
for number in nums:
if number - 1 not in nu
我有一个下面的课程
class Test:
self.value = 0
self.name = ''
我有数百万条记录,我只想根据它们的name对选择性记录进行排序。我已经创建了一个名为whitelist_names的单独列表。我创建字典列表对象的方式如下所示
'''input_value and input_name are being feed from a file-read'''
map_list = {}
t = Test(input_value, input_name)
if t.input_na
python wiki说:“使用集合和字典测试成员关系比搜索序列O(n)快得多。当测试‘a in b’时,b应该是一个集合或字典,而不是列表或元组。”
在我的代码中,只要速度很重要,我就一直在使用集合代替列表,但最近我一直在想,为什么集合比列表快得多。有没有人能给我解释一下,或者给我一个可以解释的来源,在python的幕后到底是怎么回事才能更快地制作套装?
我正在寻找在列表中搜索项目的最快方法。正如我在Python中发现的那样,最好使用set搜索条目,而不是使用list。所以我用list代替了set。但是,set中的所有项都是一个对象。我想搜索对象id是否等于我想要找到的id。如果是,则返回该对象。
我可以在一个简单的for-循环中这样做,但我不知道如果我仍然循环所有元素来查找项目,如何在set中改进它。
def find(allItems, id):
for item in allItems:
if (item.getId() == id):
return item
from sets import Set
我有一个正在尝试排序的句子列表,以便每个后续句子一次只引入一个新词(在前面的句子中没有出现过)。我的程序起作用了--但一旦我开始输入一个合适大小的列表,就会耗费很长时间。对于没有接受过CS培训,也没有程序员的基本经验的人来说,我如何才能让这一切变得更快呢? 我已经搜索了这个问题,并阅读了有关多处理和向量方法的文章。最初,多处理在这里似乎没有帮助,因为我需要将每个元素与其他元素进行比较,所以这并不重要。(这是错的吗?如果是这样的话,我该如何开始实现这种方法?)向量帖子超出了我最初的理解。 import operator as op
def ranker(inputList):
我有一本字典和一份清单。该列表由值组成。字典包含所有的值以及一些更多的值。
我正在尝试计算列表中的值在每个键/值对的字典中出现的次数。
它看起来像这样:
for k in dict:
count = 0
for value in dict[k]:
if value in list:
count += 1
list.remove(value)
dict[k].append(count)
我在列表中有大约一百万个条目,所以每次搜索都非常慢。
有没有更快的方法来做我想做的事情?
谢谢,罗翰
我有一个Id映射缓存,它占用了太多的内存。它用于容纳对象的3种不同类型的Id的组合,它们的映射是从表中读取的,并缓存在6个不同的字典中,以便从任何一种Id类型快速查找/转换为另一种Id类型(性能对我的应用程序很重要)。
我希望将其重写为具有较小内存占用的内容,因此我实现了Id的合并列表,并使用linq/lambda表达式提取我想要的值。现在看起来是这样的。
public struct IdMappings
{
public int Id1;
public int Id2;
public int Id3;
}
//new cache
private sta
我正在测试从Dictionary VS list获取数据的速度。
我已经使用以下代码进行了测试:
internal class Program
{
private static void Main(string[] args)
{
var stopwatch = new Stopwatch();
List<Grade> grades = Grade.GetData().ToList();
List<Student> students = Student.GetStudents().ToList();
dlist=['All my loving','All my bros','And all sis']
我想创建一个字典,以便所有单词(作为键)都被分配一个值,该值是单词出现在其中的数据列表的索引。例如,'All':{0,1},'my':{0,1},'sis'={2}等。
不知何故,这不起作用:
dict={}
{w:{num} if w not in dict.keys() else dict[w].add(num) for (num,strn) in enumerate(dlist) for w
我正在寻找最有效/最优雅的方法来完成以下工作:
if id in list_of_ids:
#do something
其中list_of_ids是一个大的有序列表。我将对不同的id执行数百万次此操作(但list_of_ids将保持不变)。
我可以使用这里建议的内容:,但是这些方法在上面的实现中似乎都不是很优雅。有没有一种很好的方式告诉python,它正在对有序列表执行“list_of_strings中的字符串”,可能是一个简单的关键字或其他什么?
检查列表中是否存在一个条目的最快方法(编码)是什么?MyObject有两个属性
public class Name
{
public string FirstName{ get; set; }
public string LastName { get; set; }
}
然后我有另一个这样的类:
public class Foo
{
private List<Name> Names : new List<Name>();
public List<Name> Names { get; set; }
public bool
我一直在研究如何在大量单词列表中执行前缀搜索(例如,返回以“as”开头的所有单词)。我注意到,经常为此目的推荐使用Trie。
不过,我想出了一个关于Trie想法的简单变体。这个想法的前提是,在Python中,dict中的键查找非常快。那么,简单地将整个单词列表的所有出现的前缀存储为键,并且值在每个前缀的列表中包含匹配的单词,怎么样?
from collections import defaultdict
import nltk
# For the example I use the entire English word list of the nltk library, but this