地图和字典之间的区别

Moh*_*hit 23 python hashmap map

我可能会hashmap在Java和map/或dictPython中感到困惑.
我认为hashJava 的(k/v抽象)与dictPython 中的相同

但那么map数据类型的作用是什么?

它与hashmap抽象是一样的抽象吗?如果是这样,那么它与字典有何不同?
我浏览了文档,但它让我把不同的范例整合在一起:函数式编程.

Nol*_*lty 21

Map不是python中的数据类型.它将函数应用于一系列值并返回结果.

>>> def f(x):
...     return x**2
... 
>>> list(map(f, range(5)))
[0, 1, 4, 9, 16]
Run Code Online (Sandbox Code Playgroud)

通常对于像"pythonic"这样的简单情况,我们使用列表推导.

>>> [x**2 for x in range(5)]
[0, 1, 4, 9, 16]
Run Code Online (Sandbox Code Playgroud)

你在对比hashmaps和dicts时是正确的.

  • 是的,map不是数据类型:-)请参阅http://docs.python.org/library/functions.html#map (3认同)
  • 从 Python 3 开始,map *是*一种数据类型 - [请参阅我的答案。](/sf/answers/3156113971/) (2认同)

Ósc*_*pez 8

本质上,MapJava 中的 a 类似于dictPython 中的 a:两种数据结构都在键和值之间创建关联,并且get()contains()操作的预期性能为 O(1)。

Java 中的数据Map结构不应与map()Python 中的函数混淆:

映射(函数,可迭代,...)

将函数应用于可迭代的每个项目并返回结果列表。如果传递额外的可迭代参数,函数必须采用那么多参数并并行应用于所有可迭代的项

  • “保证 O(1) 性能”并不完全正确。请参阅http://wiki.python.org/moin/TimeComplexity (2认同)