2012-04-08 145 views
10

我可能会在Python中的hashmap和Python中的map/dict之间混淆。
我认为爪哇hash(K/V抽象)是一种相同的如在Python地图和字典之间的区别

dict但那么,什么是map数据类型呢?

它和散列图抽象是一样的抽象吗?如果是这样,那么它与字典有什么不同呢?
我仔细阅读了文档,但是我花了整个不同的范例:函数式编程。

+1

你的问题是有点不清楚,但为Python,这可能是你正在寻找的文件:HTTP ://docs.python.org/library/stdtypes。HTML#映射类型快译通 – 2012-04-08 20:50:37

回答

15

Map在Python中不是数据类型。它将函数应用于一系列值并返回结果。

>>> def f(x): 
...  return x**2 
... 
>>> map(f, range(5)) 
[0, 1, 4, 9, 16] 

往往像一个简单的例子是“Python的”我们用列表内涵。

>>> [x**2 for x in range(5)] 
[0, 1, 4, 9, 16] 

你是对你的包含HashMap和类型的字典进行比较。

+3

呀,地图是不是数据类型:-)看看http://docs.python.org/library/functions.html#map – 2012-04-08 20:51:56

+0

@MaksymPolshcha感谢您的链接,我已经编辑它进入我的职务。 – 2012-04-08 20:53:00

+0

对于Python 3,图*为*数据类型 - [见我的回答(https://stackoverflow.com/a/45087342/1048186) – 2017-07-13 17:27:17

2

python中没有地图数据类型。 map是一个将函数映射到序列的函数。

def increment(n): 
    return n+1 
l = [1,2,3] 
map(increment, l) 

会给你一个新的列表[2,3,4]

2

实质上在Java中的Map就像在Python dict:两个数据结构创建键和值之间的关联,预计Ø (1)性能为get()和操作。

Java中的Map数据结构不应该与map()功能在Python混淆:

地图(函数,迭代,...)

应用功能的迭代和返回每个项目结果列表。如果有额外的迭代传递参数,函数必须采取许多争论和并行

+2

“保证O(1)性能” 是不完全正确。见http://wiki.python.org/moin/TimeComplexity – agf 2012-04-08 21:07:54

0

应用到项目从所有iterables在Python 3,什么是itertools的IMAP返回映射一个可重复的数据类型,相当于在Python 2

要获得在Python 3相同的结果Nolan Royalty's的Python 2例如你可以这样写:

>>> def f(x): 
...  return x**2 
... 
>>> list(map(f, range(5))) 

[0, 1, 4, 9, 16] 

如果你没有在Python 3把它包在一个列表中,你会得到一个地图obj ECT:

>>> map(f, range(5)) 
... <map object at 0x000000000327E780> 

所以有地图对象,这是可迭代的,在Python 3