3.python数据结构-集合(set)

# 集合(set)
# 无序、不重复、可放不同类型元素

# 创建非空集合,用{元素序列}
a_set = {1, 2, 'a', 'a', 2}
print('create a non-empty set:')
print(a_set)

# 创建空集合不能用{},{}为空dict
a_set = set()
print('create a empty set:')
print(a_set)

# 初始化两个句子
str_1 = 'dogs chase cats'
str_2 = 'dogs hate cats'

# 统计句子中不重复单词的集合
str_1_words = set(str_1.split())
str_2_words = set(str_2.split())

# 集合不支持索引和切片
try:
    str_1_words[1]
except:
    print("Don't support index")  # Don't support index
try:
    str_1_words[1:]
except:
    print("Don't support slice")  # Don't support slice

# 计算两个句子中不重复单词的个数
len_str_1_words = len(str_1_words)
len_str_2_words = len(str_2_words)
print(len_str_1_words, len_str_2_words)  # output:3 3

# 计算两个set的交集
print(str_1_words.intersection(str_2_words))  # output:{'dogs', 'cats'}
print(str_1_words & str_2_words)  # output:{'dogs', 'cats'}

# 计算两个set的并集
print(str_1_words.union(str_2_words))  # output:{'hate', 'dogs', 'chase', 'cats'}
print(str_1_words | str_2_words)  # output:{'hate', 'dogs', 'chase', 'cats'}

# 计算差集
print(str_1_words.difference(str_2_words))  # output:{'chase'}
print(str_1_words - str_2_words)  # output:{'chase'}

# 计算异或关系
print(str_1_words.symmetric_difference(str_2_words))  # output:{'hate', 'chase'}
print(str_1_words ^ str_2_words)  # output:{'hate', 'chase'}

# # 集合的用法(与sklearn结合)
# union_set = str_1_words.union(str_2_words)
# a = [1 if w in str_1_words else 0 for w in union_set]
# b = [1 if w in str_2_words else 0 for w in union_set]
#
# print(a) # output:[0, 1, 1, 1]
# print(b) # output:[1, 1, 0, 1]
#
# print(jaccard_similarity_score(a,b))
posted @ 2018-03-22 20:26  wjc920  阅读(121)  评论(0编辑  收藏  举报