2015-12-02 70 views
3

阅读Python文档,并且有几种创建字典的方法。dict(映射,** kwargs)vs dict(可迭代,** kwargs)

dict() 
dict(**kwargs) 
dict(mapping, **kwargs) 
dict(iterable, **kwargs) 

https://docs.python.org/2/library/stdtypes.html(5.8映射类型)

我不理解mappingiterable之间的差 - 文档读取:

如果一个位置参数,并给出它是一个映射对象,使用与映射对象相同的键值对创建字典。否则,位置参数必须是可迭代的对象。迭代器中的每个项目本身必须是一个具有两个对象的迭代器。

在我看来,那mappingiterable在这里一样的东西......你可以帮我理解上的差异?

+1

“目前只有一个标准映射类型,词典。 “我认为这里的文档很清楚(https://docs.python.org/2/library/stdtypes.html#mapping-types-dict) –

+0

@ Mr.E - 是的,OP将问题链接到问题中。他引用的片段来自该部分。 – TigerhawkT3

+0

@ TigerhawkT3意外地只发送链接:P。更正了它 –

回答

3

我不明白,映射和迭代

映射之间的差别是键/值对允许值键访问的集合 - 它的“映射”键的值。内部类型最明显的mappingdict

迭代器是一个可迭代的对象 - 这基本上意味着您可以在for obj in iterable:语句中使用它。这包括序列类型(字符串,列表等)以及其他一些(文件,dbapi游标,生成器等),也包括字典。

0

让我们看一些例子:

字典()

a=dict() ---> {}

字典(** kwargs)

a=dict(one=1, two=2, three=3) ---> {'one':1,'two':2,'three':3}

字典(映射,** kwargs)

a=dict({'one':1, 'two':2, 'three':3}) ---> { '一':1, '二':2 '3':3}

a=dict({'one':1, 'two':2, 'three':3}, four=4,five=5,six=6) ---> {{ 'one':1,'two':2,'3':3,'four':4,'five':5,'six':6}

dict(iterable,** kwarg)

a=dict([('one',1),('two',2),('three',3)]) ---> { '一':1, '二':2 '3':3}

a=dict((['one',1],['two',2],['three',3])) ---> { '一':1, '二':2 '3':3}

a=dict([('one',1),('two',2),('three',3)], four=4,five=5,six=6) ---> { '一':1, '二':2,“三':3,'four':4,'five':5,'six':6}

a=dict((['one',1],['two',2],['three',3]),four=4,five=5,six=6) --->''''':','two':2,'three':3 , '四':4 '5':5 '6':6}


注:

调用字典(可迭代,** kwarg)函数等于--->

d={} 
a=[('one',1),('two',2),('three',3)] 
for k,v in a: 
    d[k]=v 

print(d)