字典是另一种可变容器模型,可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如 d = {key1 : value1, key2 : value2 }
字典中的 key 值不可以重复(第一次定义后不能重复定义)。
字典的几个特点:
而 list 相反:
字典的基本操作:
In [2]:
# 定义字典
# 访问字典中的 key-value
d = {'Tom': 95, 'Mary': 90, 'Tracy': 92}
print(d)
print(d['Tom'])
In [3]:
# 字典增加元素,直接定义值即可
d['Hugo'] = 85
print(d)
In [4]:
# 修改字典元素的值
d['Tom'] = 97
print(d)
# 字典是否存在某个 key
print('Tom' in d)
# 如果要获得不存在的 key 的 value,可以设置默认值
print(d.get('Tommy',80))
In [5]:
# 去获得不存在的 key 的 value,会报错
print(d['Tommy'])
In [ ]:
# 字典删除 key
d = {'Tom': 95, 'Mary': 90, 'Tracy': 92}
print(d)
# 删除 key
d.pop('Tom')
print(d)
In [ ]:
# 获得字典的长度
# 定义一个空的字典
d = {}
# 造一些字典内容
# str 函数将整数转换为字符串
for i in range(30):
d['id_'+str(i)] = i*3
print(d)
print(len(d))
In [ ]:
# 创建元组,用小括号
t = ('Tom', 'Jerry', 'Mary')
print(t)
In [ ]:
# 访问元组的元素
print(t[1])
In [ ]:
# 元组创建后是不能修改的
# 会报错
t.append('Someone')
In [ ]:
# 元组创建后是不能修改的
# 像列表一样去定义值也会报错
# 'tuple' object does not support item assignment
t[1] = 'aaa'
In [ ]:
# 看看 tuple 有什么方法,你会发现很少
print(dir(tuple))
In [ ]:
# 创建复杂一点的元组
t1 = ['A', 'B', 'C']
t2 =(t1, 100, 200)
print(t2)
In [ ]:
# 变通的实现"可变"元组内容
t1 = ['A', 'B', 'C']
t2 =(t1, 100, 200)
print(t1)
print(t2)
# tuple的每个元素,指向永远不变,但指向的元素本身是可变的
t1.append('D')
print(t1)
print(t2)
In [ ]:
# 创建只有1个元素的元组
# 下面这样是不行的
t = (1)
# l成了一个整数,因为这里的括号有歧义,被认作数学计算里的小括号
print(type(t))
# 1个元素的元组必须加逗号来消除歧义
t = (1,)
print(type(t))
print(t)
In [ ]:
!pip install jieba
In [ ]:
import jieba
# 全模式
# 把句子中所有的可以称此的词语都扫描出来,速度非常快,但是不能解决歧义
seg_list = jieba.cut("今天上海的天气怎么样", cut_all = True)
print("Full Mode: " + "/ ".join(seg_list))
In [ ]:
# 精确模式
# 试图将句子最精确的切开,适合文本分析
seg_list = jieba.cut("明天纽约下雨么", cut_all = False)
print("Default Mode: " + "/ ".join(seg_list))
In [ ]:
# 默认是精确模式
seg_list = jieba.cut("现在天气怎么样")
print(", ".join(seg_list))
In [ ]:
# 默认是精确模式
seg_list = jieba.cut("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")
print(", ".join(seg_list))
In [ ]:
# 搜索引擎模式
# 在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词
seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")
print(", ".join(seg_list))
In [ ]:
# 看看网络上的段子,分词带来的烦恼
seg_list = jieba.cut_for_search("黑夜总会过去")
print(", ".join(seg_list))
seg_list = jieba.cut("黑夜总会过去", cut_all = True)
print(", ".join(seg_list))
In [ ]:
# 默认是精确模式
seg_list = jieba.cut("2016年第一季度支付事业部交易量报表")
print(','.join(seg_list))
In [ ]:
# 默认是精确模式
seg_list = jieba.cut("2016年第一季度支付事业部交易量报表")
for i in seg_list:
print(i)
In [ ]:
import jieba.posseg as pseg
words = pseg.cut("我爱北京天安门")
for word, flag in words:
print('%s %s' % (word, flag))
北大词性标注集
In [6]:
print('\n'.join([''.join([('YANGYANG'[(x-y)%8]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' ')for x in range(-30,30)])for y in range(15,-15,-1)]))
In [ ]: