dict() 函数用于创建一个字典。
语法
语法:
class dict(**kwargs)
class dict(mapping, **kwargs)
class dict(iterable, **kwargs)
参数说明:
**kwargs
-- 关键字
mapping
-- 元素的容器。
iterable
-- 可迭代对象。
返回值
返回一个字典。
示例
# 传入关键字
>>> dict(a='a', b='b', t='t')
{'a': 'a', 'b': 'b', 't': 't'}
# 映射函数方式来构造字典
>>> a = [1,2,3,4]
>>> b = ['a', 'b', 'c', 'd']
>>> ab = zip(a,b)
>>> ab
[(1, u'a'), (2, u'b'), (3, u'c'), (4, u'd')]
>>> dict(ab)
{1: u'a', 2: u'b', 3: u'c', 4: u'd'}
# 可迭代对象方式来构造字典
>>> dict([('one', 1), ('two', 2), ('three', 3)])
{'three': 3, 'two': 2, 'one': 1}
问题
想要变更字典中某一个值,我们使用 dict 来修改,比如,我们想将
{1: u'a', 2: u'b', 3: u'c', 4: u'd'}
中的 {1:u'a'}
修改成 {1: u'aa'}
,要怎么做呢?
很显然,直接使用 dict, 方法如下:
>>> ab_dict = dict(ab)
>>> dict(ab_dict, 1='aa')
结果却是报错:
dict(ab_dict, 1="a")
SyntaxError: keyword can't be an expression
语法上看起来没有错,为什么会报语法错误呢?
原来:
dict(**kwargs) -> new dictionary initialized with the name=value pairs
in the keyword argument list. For example: dict(one=1, two=2)The keys (or name as used in this case) must be valid Python identifiers, and ints are not valid.
使用 dict 的键值对来生成字典时,键字必须是 python 中的 标识符,而数字不是标识符。
标识符是以下列词汇的定义:
identifier ::= (letter|
"_"
) (letter | digit |"_"
)
letter ::= lowercase | uppercase
lowercase ::= "a"..."z"
uppercase ::= "A"..."Z"
digit ::= "0"..."9"
即:标识符必须以字母(大小写均可)或者"_"
开头,接下来可以重复 0 到多次(字母|数字|"_"
)
标识符
没有长度限制
,并且区分大小写
那想要修改怎么办,直接通过字典的切片来修改:
>>> ab_dict[1] = 'aa'
>>> ab_dict
{1: u'aa', 2: u'b', 3: u'c', 4: u'd'}