您的位置:首页 > 编程语言 > Python开发

Python-Dictionary-创建字典的方式

2016-12-14 17:55 344 查看

字典

我们创建字典的方式有很多,根据需求不同,采用合适的方式才能够事半功倍。

我使用的Python3.0 版本,所以较之2.X的版本,新增了解析式创建法。

1.{}

我称这个方法为一个花括号搞定法,此方法适合你知道字典中的内容已经是什么了,一次性的将字典创建出来。后期字典变化不频繁的情况。

"""
1. 一个花括号搞定全部法
"""

D={'name':'Bob','age':14,'sex':'male'}
print(D)


输出:

{'name': 'Bob', 'age': 14, 'sex': 'male'}


2.D={}

当面对后期再一次次对字典中的字段进行添加的情况,我们先用一个空字典的方式,给D占一个字典的坑,然后再后面的程序中,一个个补上其中的内容。这就适合需要动态建立字段的情况。

"""
2. 后期需要动态建立字典的字段
"""
D={}
D['name']='Bob'
D['age']=14
D['sex']='male'
print(D)


输出:

{'name': 'Bob', 'age': 14, 'sex': 'male'}


3.dict(key1=value1,key1=value2,…)

此方法使用起来比较方便,而且简单,代码量小~

"""
3. dict(key1=value1,...)等号形式
"""
D=dict(name='Bob',age=14,sex='male')
print(D)


输出:

{'name': 'Bob', 'age': 14, 'sex': 'male'}


4.dict([(key1,value1),(key2,value2),…])

使用(key,value)pair的形式,来创建一个个映射关系对象。

如果需要再程序运行的时候,把键和值逐步建成序列。

此方法还常结合zip函数来使用,把程序运行时候的动态获取到的键和值的不同列表合并在一起。

"""
4.dict([(key1,value1),(key2,value2),...])
"""
D=dict([("name","Bob"),("age",14),("sex",'male')])
print(D)


输出:

{‘name’: ‘Bob’, ‘age’: 14, ‘sex’: ‘male’}

结合zip函数的使用方式

D=dict(zip(['name','age','sex'],['Bob',14,'male']))
print("zip way:",D)


输出

zip way: {'name': 'Bob', 'age': 14, 'sex': 'male'}


5.dict.fromkeys(key[,default])

根据seq提供的key值与value值创建一个新的字典。

value值如果没有给出,默认为none。

如果所建的字典的键的value值都一样的话,简单得传入一个键列表,以及所有键对应得初始值。

"""
5.dict.fromkeys(key[,default])
如果所建的字典的键的value值都一样的话,简单得传入一个键列表,以及所有键对应得初始值。
"""
key_list=['name','age','sex']
D=dict.fromkeys(key_list,0)
print("keylist:",key_list)
print("Dictionary:",D)


输出:

keylist: ['name', 'age', 'sex']
Dictionary: {'name': 0, 'age': 0, 'sex': 0}


6.dict(iterator)字典解析表达式

在Python 3.0中,对比过去得2.X版本得一个很大得不同,就是字典得创建,支持解析表达式得方式。

采用这个方式,调用dict()构造函数,传入一个迭代器对象。

D={k:v for (k,v) in zip(['name','age','sex'],['Bob',14,'male'])}
print(D)


输入:

{'name': 'Bob', 'age': 14, 'sex': 'male'}


这个方式能够达到直接使用zip()函数一样的目的,但是看着比zip函数更加繁琐。

其实解析表达式使用的场景要比zip函数更多,更灵活更方便。

一大批例子来袭

1.

D={k:k **2 for k in [1,2,3,4]}
print(D)


输出

D={k:k **2 for k in [1,2,3,4]}
print(D)


2.

D={c:c * 4 for c in 'SPAM'}
print(D)


输出

{'S': 'SSSS', 'P': 'PPPP', 'A': 'AAAA', 'M': 'MMMM'}


3.

'''
还可以结合一些函数来使用
'''

D={k.lower():k+'!' for k in'HAPPY' }
print(D)


输出

{'h': 'H!', 'a': 'A!', 'p': 'P!', 'y': 'Y!'}


4.可以达到初始化value的目的

'''
达到fromkeys 一样的效果
'''
D={k:"初始值" for k in ['sex','name','age']}
print(D)


输出

{'sex': '初始值', 'name': '初始值', 'age': '初始值'}


字典解析:

字典解析还可以包括嵌套循环,以及if字句等等形式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python