标签: hashmap

Python 中的哈希图和哈希表有什么区别?

Python 中的哈希图和哈希表有什么区别?

我知道它们是作为字典容器实现的,但据我所知,哈希图是同步的,因此它们一次只能由一个任务/函数操作,而哈希表可以同时由多个线程操作。我很确定字典是一个哈希图,因为它允许“无”键和“无”值,那么 Python 中的哈希表是什么?

python hashtable hashmap

0
推荐指数
1
解决办法
2826
查看次数

为什么向 HashMap 插入一个值总是会导致该值为 None?

我正在尝试创建一个Cacher结构,它将计算值存储在HashMap. 该calculation方法将采用一个类型的变量T,进行计算并返回一个具有相同类型的值T。此回调的类型calculation将为Fn(T) -> T.

我发现这个值将是HashMap实现EqHash特征的关键。看起来一切都应该正常,我可以毫无错误地编译我的程序。

然后我编写了一个测试来检查一切是否按预期工作:

use std::{hash::Hash, collections::HashMap};

struct Cacher<T, U>
where
    T: Fn(U) -> U,
{
    calculation: T,
    values: HashMap<U, U>,
}

impl<T, U> Cacher<T, U>
where
    T: Fn(U) -> U,
    U: Eq + Hash + Clone,
{
    fn new(calculation: T) -> Cacher<T, U> {
        return Cacher {
            calculation,
            values: HashMap::new(),
        };
    }

    fn value(&mut self, arg: U) …
Run Code Online (Sandbox Code Playgroud)

types hashmap rust

0
推荐指数
1
解决办法
669
查看次数

如何在 Rust 中循环字典对象?

我有一本字典,在 python 中我可以使用它进行迭代

data = {"one":1,"two":2,"three":3,"four":4,....."two hundred":200}

for i,j in data.items():
    print(i,j)
Run Code Online (Sandbox Code Playgroud)

有什么方法可以使用同一个对象并迭代 Rust 中的键和值吗?

dictionary loops hashmap rust

0
推荐指数
1
解决办法
2857
查看次数

Rust 中的内连接两个 `HashMap`

假设我们有两个std::collections::HashMap-s,例如HashMap<K, V1>HashMap<K, V2>,以及一个函数Fn(V1, V2) -> R

如何对这些哈希图执行内部联接,以便获得HashMap<K, R>它们的共享密钥?这是一个参考实现来说明我的意思:

use std::collections::HashMap;

fn main() {
    let mut map_a = HashMap::<&str, i32>::new();
    map_a.insert("foo", 1);
    map_a.insert("bar", 2);
    map_a.insert("qux", 3);
    map_a.insert("quux", 4);
    
    let mut map_b = HashMap::<&str, i32>::new();
    map_b.insert("foo", 5);
    map_b.insert("bar", 6);
    map_b.insert("quuux", 7);
    map_b.insert("quuuux", 8);
    
    // To keep it simple I'm just combining respective values into a tuple:
    let joined_map = map_a
        .into_iter()
        .filter_map(|(key, value_a)| map_b.remove(key).map(|value_b| (key, (value_a, value_b))))
        .collect::<HashMap<&str, (i32, i32)>>(); …
Run Code Online (Sandbox Code Playgroud)

join hashmap inner-join rust

0
推荐指数
1
解决办法
1257
查看次数

Java复制HashMap时如何将浮点键转换为整数键?

你好 Stack Overflow 社区,

我在使用 Java 的 HashMap 时遇到了挑战。我有两个 HashMap,map1 和 map2,其中 map1 具有 Float 类型的键,map2 具有 Integer 类型的键。现在,我需要将条目从map1复制到map2。

import java.util.Map;
import java.util.HashMap;

public class Q9 {
    public static void main(String[] args) {
        Map<Float, String> map1 = new HashMap<>();
        Map<Integer, String> map2 = new HashMap<>();

        // Adding entries to map1
        map1.put(11.1f, "black");
        map1.put(12.1f, "brown");
        map1.put(13.1f, "Grey");
        map1.put(14.1f, "blue");

        // Now, I want to copy the entries from map1 to map2 with Integer keys
        // map2.putAll(map1); // This line gives a …
Run Code Online (Sandbox Code Playgroud)

java hashmap type-conversion

0
推荐指数
1
解决办法
780
查看次数

如何在 C++ 中通过引用传递映射?

#include<bits/stdc++.h>
#include<map>
using namespace std;
bool greaterThanExists(int i,std::map<int,int>&mpp)
{
    for(auto it:mpp)
    {
        if(it.first>i && it.second>0)
        {   cout<<it.first<<endl<<endl;
            it.second--;
            return true;
        }
    }
    return false;
}

int main()
{   int n;
    cin>>n;
    map<int,int>mpp;
    for(int i=0;i<n;i++)
    {
    int x;
    cin>>x;
    mpp[x]++;
    }
    int i=0;
    while(greaterThanExists(i,mpp))
    i++;
    
    // cout<<i<<endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

问题: https: //codeforces.com/contest/1165/problem/B

在 Codeforces 的这个问题中,我试图通过 C++ 中的引用传递地图,但显然这些更改没有反映在地图中。

c++ reference hashmap pass-by-reference c++17

0
推荐指数
1
解决办法
129
查看次数

For循环不按顺序打印哈希图

我不明白为什么这没有按顺序打印哈希图。分配key的时候也是这样保存的吗?肉眼看来,它似乎是随机的。这对 Rust 来说正常吗?

use std::collections::HashMap;
use rand::Rng;

fn main() {
    let mut board = HashMap::new();
    
    for n in 0..99 {
        board.insert(n,0);
    }
    // board.insert(1, 0);

    for (key,value) in &board {
        println!("{}: {}", key, value);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

21: 0
15: 0
90: 0
10: 0
52: 0
92: 0
32: 0
61: 0
91: 0
50: 0
28: 0
93: 0
64: 0
72: 0
75: 0
95: 0
98: 0
89: 0
57: 0
88: 0
9: 0
85: …
Run Code Online (Sandbox Code Playgroud)

hashmap rust

0
推荐指数
1
解决办法
538
查看次数

为什么 HashMap 会忽略具有来自同一超类的键的条目?

我创建了一个带有内部地图的地图作为测试,看起来外部地图将忽略其余的地图。我认为它会压倒他们。我还认为这是因为它们都是从 Map 扩展的,所以当它们不是时,它将它们视为同一个实例。

Map<Map<Integer, String>,String> maps=new HashMap<>();
maps.put(new HashMap<Integer, String>(),"HashMap");
maps.put(new TreeMap<Integer, String>(),"TreeMap");
maps.put(new LinkedHashMap<Integer, String>(),"LinkedHashMap");
maps.put(new Hashtable<Integer, String>(),"Hashtable");
Run Code Online (Sandbox Code Playgroud)

将地图打印到日志将仅显示最后添加的地图:

maps: {{}=Hashtable}
Run Code Online (Sandbox Code Playgroud)

我尝试了其他 Map 实现,除了 TreeMap 之外,所有实现都具有相同的行为,由于 HashMap 没有实现,它会抛出异常Comparable

这是预期的行为吗?为什么 HashMap 会有这样的行为?

java collections dictionary hashmap

0
推荐指数
1
解决办法
239
查看次数

在 Map&lt;String, List&lt;Integer&gt;&gt; 中查找最大值的最小值,而不依赖于 for 循环

我有一张 类型的地图HashMap<String, List<Integer>>

我想找到每个地图条目的最大值,然后找到这些最大值中的最小值

我知道这可以使用几个 for 循环来完成。但想知道是否有另一种方法可以做到这一点(也许使用流?)

我要寻找的最终结果是一个整数。

例子:

HashMap<String, List<Integer>> values = new HashMap<>();

values.put("a", Arrays.asList(4, 8, 9, 10)); // max value is 10
values.put("b", Arrays.asList(20, 32, 1, 2)); // max value is 32
values.put("c", Arrays.asList(11, 50, 20, 6)); // max value is 50

// I need the min value out of the above maximums i.e. 10 (final answer)
Run Code Online (Sandbox Code Playgroud)

java hashmap java-stream

0
推荐指数
1
解决办法
1890
查看次数

带自定义键的 std::map

我想使用带有以下自定义键的标准地图:

struct ParserKey{
    ParserKey(uint16_t compno,
             uint8_t resno,
             uint64_t precinctIndex) : compno_(compno),
                                       resno_(resno),
                                       precinctIndex_(precinctIndex)
    {
    }
     uint16_t compno_;
     uint8_t resno_;
     uint64_t precinctIndex_;
};
Run Code Online (Sandbox Code Playgroud)

不过,没有明显的方式来订购钥匙。这些键可以订购吗?或者我是否需要不同的关联集合?

c++ std hashmap

0
推荐指数
1
解决办法
827
查看次数