码迷,mamicode.com
首页 > 编程语言 > 详细

python周报第三周

时间:2016-05-23 13:29:09      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

1.set 集合

1.set 方法解析

1.定义一个set

s1 = "caesary"
set1 = set(s1)
print(set1)
l1 = [1,2,3,4]
set2 = set(l1)
print(set2)
t1 = (1,1,1,2,3)
set3 = set(t1)
print(set3)

 

执行结果如下

{y, e, s, r, c, a}
{1, 2, 3, 4}
{1, 2, 3}

总结:set集合有去重功能,类似awk数组;并且是无序的,类似字典。

2.add()

print(set1)
set1.add("x")
print(set1)

执行结果如下

{e, a, s, c, r, y}
{e, a, s, c, r, x, y}

总结:add()方法可以在集合中添加一个元素。

3.clear()

print(set1)
set1.clear()
print(set1)

执行结果如下

{s, a, r, c, e, y}
set()

总结:clear()方法可以清空一个集合。

4.copy()

print(set1)
set4 = set1.copy()
print(set1,set4)

执行结果如下

{s, a, y, c, r, e}
{s, a, y, c, r, e} {c, r, e, s, a, y}

 

总结:copy()可以浅拷贝一个集合。

5.difference()、difference_update()

print(set2,set3)
set5 = set2.difference(set3)
print(set5,set2)
set3.difference_update(set2)
print(set2,set3)

执行结果如下

{1, 2, 3, 4} {1, 2, 3, 5}
{4} {1, 2, 3, 4}
{1, 2, 3, 4} {5}

总结:difference()方法,是从本集合中删除和参数集合共同的元素并赋给一个集合,本集合和参数集合不变。difference_update()方法,是从本集合中删除和参数集合共同的元素,作用在本集合上。

6.discard()、remove()

共同点:

print(set3)
set3.discard(2)
print(set3)
set3.remove(1)
print(set3)

执行结果如下

{1, 2, 3, 5}
{1, 3, 5}
{3, 5}

不同点:

t1 = (1,1,1,2,3,5)
set3 = set(t1)

print(set3)
set3.discard(6)
print(set3)
set.remove(6)
print(set3)

执行结果如下

Traceback (most recent call last):
  File "/Users/liukai/PycharmProjects/s13/day3/blog.py", line 49, in <module>
    set.remove(6)
TypeError: descriptor remove requires a set object but received a int
{1, 2, 3, 5}
{1, 2, 3, 5}

总结:discard()、remove()方法都是删除一个元素,不同的是,discard()是有则删除,无则pass,而remove()方法是有则删除,无则异常,强烈建议使用discard()

7.intersection()、intersection_update()

print(set2,set3)
set7 = set2.intersection(set3)
print(set7)

执行结果如下

{1, 2, 3, 4} {1, 2, 3, 5}
{1, 2, 3}

总结:intersection()方法,返回一个本集合和参数集合的交集集合。

print(set2,set3)
set2.intersection_update(set3)
print(set2)

执行结果如下

{0, 1, 2, 3, 4} {1, 2, 3, 5}
{1, 2, 3}

总结:intersection_update()方法,返回一个本集合和参数集合的交集集合,作用于本集合。

8.update()

print(set2)
set2.update({0,0,0,9})
print(set2)

执行结果如下

{1, 2, 3}
{0, 1, 2, 3, 9}

总结:update()方法直接更新一个集合到本集合并去重。

 

2.set应用举例分析

有两个字典,需要把新字典更新到老字典:

old_dict = {
    "#1":8,
    "#2":4,
    "#4":2,
}

new_dict = {
    "#1":4,
    "#2":4,
    "#3":2,
}

解题思路:

1.需要求出老字典需要删除的条目。

2.需要求出新字典需要新增到老字典的条目。

3.需要求出新字典需要更新到老字典的条目。

解题方法:

###set(),把老字典的key转化成一个集合
old_key_set = set(old_dict.keys())
###set(),把新字典的key转化成一个集合
new_key_set = set(new_dict.keys())
###定义一个需要删除的集合,set的difference()求出在老字典的key而不在新字典的key的集合
remove_set = old_key_set.difference(new_key_set)
###删除老字典的条目
del old_dict["".join(list(remove_set))]
###定义一个需要新增的集合
update_set = new_key_set.difference(old_key_set)
###新增新字典的条目
old_dict["".join(list(update_set))] = new_dict["".join(list(update_set))]
###查找需要更新的key,我采取的方法是遍历两个字典
for i in old_dict:
    for j in new_dict:
        if i == j and old_dict[i] != new_dict[j]:
            old_dict[i] = new_dict[j]
print(old_dict)

结果:

{#1: 4, #2: 4, #3: 2}

 

python周报第三周

标签:

原文地址:http://www.cnblogs.com/Caesary/p/5519480.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!