батчить get операцию, т. к. ключи отсортированы по дереву. Как мне взять, допустим, все элементы с префиксом XYZ?
                  
                  
                
Чтобы иметь возможность перебирать ключи по порядку и запрашивать сразу некоторый их диапазон. Вдобавок, очень маленькие BTreeMap могут работать быстрее HashMap, особенно с дефолтным хешером. Если эти возможности тебе не требуются, то используй HashMap и не парься
 mental
                          stability🥺✨
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          mental
                          stability🥺✨
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Что значит "по порядку"? В HashMap#iter не "по порядку"? Или имеется в виду тот порядок, в котором они были добавлены?
Итератор по HashMap выдаёт элементы в каком-то порядке. Каком именно — не фиксируется
 mental
                          stability🥺✨
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          mental
                          stability🥺✨
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  А одинаковый хэш всё также заменяет значение, да?
На вид звучит как https://doc.rust-lang.org/stable/alloc/collections/btree_map/struct.BTreeMap.html#method.range
Тут наверное правильнее было сказать: в порядке добавления. Например в python есть гарантия, что порядок добавления = порядку итерации. В Rust такого нету
 mental
                          stability🥺✨
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          mental
                          stability🥺✨
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Не то. Кажется, мне всё же нужно что-то типа trie map
а чем не устраивает? Я вижу только проблему, что тут диапазон не очень удобно подбирать, типа XYZ..XY(Z+1)
 mental
                          stability🥺✨
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          mental
                          stability🥺✨
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Мне по префиксу искать нужно. XYZ это типа sample text)
ну да, и такой range() как раз вернет все записи с таким префиксом у ключа
 mental
                          stability🥺✨
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          mental
                          stability🥺✨
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Знал бы я диапазон хотя бы, можно было бы найти первый ключ и взять n после него. Мне же нужно найти все значения с "prefix_"
Смотря как критерий сортировки задан. Для строк действительно лучше другие структуры данных, но если лексикографический порядок задан, то range берётся от XYZ до XZ, кажется
Префиксное дерево, или как-то так
можно прочитать первую строку документации) B-Trees represent a fundamental compromise between cache-efficiency and actually minimizing the amount of work performed in a search
Я бы уточнил что в питоне это добавили в какой-то там 3.x версии
да маппинги раньше не гарантировали последовательность
Обсуждают сегодня