美文网首页
python dict() 函数使用

python dict() 函数使用

作者: Uchen | 来源:发表于2019-01-08 11:41 被阅读5次

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'}

相关文章

网友评论

      本文标题:python dict() 函数使用

      本文链接:https://www.haomeiwen.com/subject/vasvrqtx.html