阅读Python文档,有几种创建词典的方法。
dict()
dict(**kwargs)
dict(mapping, **kwargs)
dict(iterable, **kwargs)
https://docs.python.org/2/library/stdtypes.html(5.8映射类型)
我不明白mapping
和iterable
之间的区别 - 文档内容如下:
如果给出了位置参数并且它是映射对象,则使用与映射对象相同的键值对创建字典。否则,位置参数必须是可迭代对象。迭代中的每个项目本身都必须是具有两个对象的可迭代项。
在我看来,mapping
和iterable
在这里是一回事......你能帮我理解其中的区别吗?
答案 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)