字典一直是python可迭代对象里面一直记不住的东西,今天我再次奢侈一把。把它记录一下
可迭代对象
简单的理解是可以用for循环的对象,就是可迭代对象。比如:list,字符串,dict,元组,生成器等
可变类型和不可变类型
麻烦方法:用 id(X) 函数,对 X 进行某种操作,比较操作前后的 id,如果不一样,则 X 不可变,如果一样,则 X 可变。
便捷方法:用 hash(X),只要不报错,证明 X 可被哈希,即不可变,反过来不可被哈希,即可变。
字典的定义
字典 是无序的 键:值(key:value)对集合,键必须是互不相同的(在同一个字典之内)。
dict 内部存放的顺序和 key 放入的顺序是没有关系的。
dict 查找和插入的速度极快,不会随着 key 的增加而增加,但是需要占用大量的内存。
字典 定义语法为 {元素1, 元素2, …, 元素n}
其中每一个元素是一个「键值对」-- 键:值 (key:value)
关键点是「大括号 {}」,「逗号 ,」和「冒号 :」
大括号 -- 把所有元素绑在一起
逗号 -- 将每个键值对分开
冒号 -- 将键和值分开
创建字典 设置默认
可以用
a={}
a=dict()
创建空列表
或者
a={key1:value1,key2:value2}
其中value是唯一不可变的,value是可变的且不唯一的 value可以不填 然后为默认值
a.setdefault()
可以设置默认值
a={“key1”:“value1”,“key2”:“value2”}
b=a[“key1”]
或b=a.get(“key1”, default=None)
则b为value1
内置方法也可以创建dict.fromkeys(seq[, value])
获取全部的key
a={“key1”:“value1”,“key2”:“value2”}
list(a.keys())
或
list(a)
返回
[‘key1’, ‘key2’]
获取全部的value
a={“key1”:“value1”,“key2”:“value2”}
list(a.values())
返回
[‘value1’, ‘value2’]
获取全部的(key,value)
a={“key1”:“value1”,“key2”:“value2”}
list(a.items())
返回
[(‘key1’, ‘value1’), (‘key2’, ‘value2’)]
加入另外的字典内容
a.update(b)
可以理解为
a=a+b
关于POP
dict.pop(key[,default])删除字典给定键 key 所对应的值,返回值为被删除的值。key 值必须给出。若key不存在,则返回 default 值
del dict[key] 删除字典给定键 key 所对应的值。
文本
内置方法:
capitalize() 将字符串的第一个字符转换为大写。
lower() 转换字符串中所有大写字符为小写。
upper() 转换字符串中的小写字母为大写。
swapcase() 将字符串中大写转换为小写,小写转换为大写。
endswith(suffix, beg=0, end=len(string)) 在指定范围内检查是否以某字符串结尾。
startswith(substr, beg=0,end=len(string)) 在指定范围内检查是否以某字符串开始
find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end,则检查是否包含在指定范围内,如果包含,返回开始的索引值,否则返回 -1。
rfind(str, beg=0,end=len(string)) 类似于 find() 函数,不过是从右边开始查找。
isnumeric() 判断是否只有数字字符
自动左补齐和右补齐
ljust(width[, fillchar])
rjust(width[, fillchar])
replace()替换
split()分割
lstrip([chars])删除最左边的某个字符默认为" "
rstrip([chars])删除最右边的某个字符默认为" "
str5.strip()删除最左右边的某个字符默认为" "
字符串格式化
str8 = “{0} Love {1}”.format(‘I’, ‘Lsgogroup’) # 位置参数
print(str8) # I Love Lsgogroup
str8 = “{a} Love {b}”.format(a=‘I’, b=‘Lsgogroup’) # 关键字参数
print(str8) # I Love Lsgogroup
str8 = “{0} Love {b}”.format(‘I’, b=‘Lsgogroup’) # 位置参数要在关键字参数之前
print(str8) # I Love Lsgogroup
str8 = ‘{0:.2f}{1}’.format(27.658, ‘GB’) # 保留小数点后两位
print(str8) # 27.66GB