dict(映射,** kwargs)与dict(可迭代,** kwargs)

时间:2015-12-02 13:06:31

标签: python python-2.7

阅读Python文档,有几种创建词典的方法。

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

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

我不明白mappingiterable之间的区别 - 文档内容如下:

  

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

在我看来,mappingiterable在这里是一回事......你能帮我理解其中的区别吗?

2 个答案:

答案 0 :(得分:3)

  

我不了解映射和可迭代之间的区别

映射是键/值对的集合,允许键访问值 - 它"映射"价值观的关键。最明显的mapping内置类型是dict

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

答案 1 :(得分:1)

让我们看一些例子:

<强>字典()

a=dict() ---&gt; {}

<强>字典(** kwargs)

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

dict(制图,** kwargs)

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

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

dict(可迭代,** kwarg)

a=dict([('one',1),('two',2),('three',3)]) ---&gt; {'one':1,'two':2,'three':3}

a=dict((['one',1],['two',2],['three',3])) ---&gt; {'one':1,'two':2,'three':3}

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

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

注意:

调用 dict(可迭代,** kwarg)函数等于---&gt;

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

print(d)