Python中字典dict
dict字典
- 字典是一种组合数据,没有顺序的组合数据,数据以键值对形式出现
# 字典的创建 # 创建空字典1 d = {} print(d) # 创建空字典2 d = dict() print(d) # 创建有值的字典, 每一组数据用冒号隔开, 每一对键值对用逗号隔开 d = {"one":1, "two":2, "three":3} print(d) # 用dict创建有内容字典1 d = dict({"one":1, "two":2, "three":3}) print(d) # 用dict创建有内容字典2 # 利用关键字参数 d = dict(one=1, two=2, three=3) print(d) # d = dict( [("one",1), ("two",2), ("three",3)]) print(d)
{} {} {'one': 1, 'two': 2, 'three': 3} {'one': 1, 'two': 2, 'three': 3} {'one': 1, 'two': 2, 'three': 3} {'one': 1, 'two': 2, 'three': 3}
字典的特征¶
- 字典是序列类型,但是是无序序列,所以没有分片和索引
- 字典中的数据每个都有键值对组成,即kv对
- key: 必须是可哈希的值,比如int,string,float,tuple, 但是,list,set,dict 不行
- value: 任何值
字典常见操作
# 访问数据 d = {"one":1, "two":2, "three":3} # 注意访问格式 # 中括号内是键值 print(d["one"]) d["one"] = "eins" print(d) # 删除某个操作 # 使用del操作 del d["one"] print(d)
1 {'one': 'eins', 'two': 2, 'three': 3} {'two': 2, 'three': 3}
# 成员检测, in, not in # 成员检测检测的是key内容,键 d = {"one":1, "two":2, "three":3} if 2 in d: print("value") if "two" in d: print("key") if ("two",2) in d: print("kv")
key
可以看出,字典dict中的成员检测为键,因为它具有唯一性
# 便利在python2 和 3 中区别比较大,代码不通用 # 按key来使用for循环 d = {"one":1, "two":2, "three":3} # 使用for循环,直接按key值访问 for k in d: print(k, d[k]) # 上述代码可以改写成如下 提倡这么写 for k in d.keys(): print(k, d[k]) # 只访问字典的值 for v in d.values(): print(v) # 注意以下特殊用法 for k,v in d.items(): print(k,'--',v)
one 1 two 2 three 3 one 1 two 2 three 3 1 2 3 one -- 1 two -- 2 three -- 3
# 常规字典生成式 dd = {k:v for k,v in d.items()} print(dd) # 加限制条件的字典生成式 过滤文件 dd = {k:v for k,v in d.items() if v % 2 == 0} print(dd)
{'one': 1, 'two': 2, 'three': 3} {'two': 2}
字典相关函数
# 通用函数: len, max, min, dict # str(字典): 返回字典的字符串格式 d = {"one":1, "two":2, "three":3} print(d)
{'one': 1, 'two': 2, 'three': 3}
# clear: 清空字典 # items: 返回字典的键值对组成的元组格式 d = {"one":1, "two":2, "three":3} i = d.items() print(type(i)) print(i)
<class 'dict_items'> dict_items([('one', 1), ('two', 2), ('three', 3)])
# keys:返回字典的键组成的一个结构 k = d.keys() print(type(k)) print(k)
<class 'dict_keys'> dict_keys(['one', 'two', 'three'])
# values: 同理,一个可迭代的结构 v = d.values() print(type(v)) print(v)
<class 'dict_values'> dict_values([1, 2, 3])
# get: 根据制定键返回相应的值, 好处是,可以设置默认值 d = {"one":1, "two":2, "three":3} print(d.get("on333")) # get默认值是None,可以设置 print(d.get("one", 100)) print(d.get("one333", 100)) #体会以下代码跟上面代码的区别 print(d['on333'])
{'eins': 'hahahahahah', 'zwei': 'hahahahahah', 'drei': 'hahahahahah'}