python 列表、字典的方法

# 列表最后新增元素
1 li = [11, 22, 33]
2 print(li)
3 li.append(44)  # 对原列表最后增加一个元素
4 print(li)

执行如下:
[11, 22, 33]
[11, 22, 33, 44]
# 列表清空
li = [11, 22, 33, 44, 55]
li.clear()   # 清空列表
print(li)
执行如下: []
# 列表拷贝
li = [22, 21, 32, 53]
bi = li.copy()  # 拷贝一个新列表
print(li)
print(bi)

  

执行如下:
[22, 21, 32, 53]
[22, 21, 32, 53]
# 对原有列表进行扩展
li = [23, 34, 25, 26]
li.extend("11") # 将两个字符串扩展到列表
print(li)



[23, 34, 25, 26, '1', '1']

li.extend([93]) # 扩展一个列表
print(li)

[23, 34, 25, 26, '1', '1', 93]

bi = [12, 423, 231]
li.extend(bi) # 将另一个列表扩展进来,从原列表后面添加
print(li)

[23, 34, 25, 26, '1', '1', 93, 12, 423, 231]

li = list([1, 2, 3])
print(li)
li.extend([11, 22]) # 扩展一个列表
print(li)
li.extend((911, 22)) # 也可以是元组
print(li)


执行如下:

[1, 2, 3]
[1, 2, 3, 11, 22]
[1, 2, 3, 11, 22, 911, 22]

#  列表索引
li = [1, 2, 3, 4, 5]
print(li.index(5))  # 获取列表元素的下标号


执行如下:
4
# 列表插入
li = [2, 2334, 11, 33]
li.insert(2, ("a", "b", "c"))  # 在索引2处插入一个元组
print(li)

li.insert(4, [66, 33])  # 在索引4处插入一个新列表
print(li)

li.insert(1, "cc")  # 在索引1处插入一个元素
print(li)
结果如下:
[2, 2334, ('a', 'b', 'c'), 11, 33]
[2, 2334, ('a', 'b', 'c'), 11, [66, 33], 33]
[2, 'cc', 2334, ('a', 'b', 'c'), 11, [66, 33], 33]


# 在移除列表元素,在消息队列中会用到
li = [2, 2334, 11, 33]
ret = li.pop()  # 获取剔除的值,默认删除最后的值
print(li)
print(ret)

[2, 2334, 11]

33

ret1 = li.pop(0) # 删除该索引处的元素,并获取删除的值
print(li)

[2334, 11]

print(ret1)

2


# 删除列表指定的值
li = [11, 22, 11, 22, 11]
print(li)
li.remove(11) # 删除列表某一元素,此处非索引,如有重复只删除第一个
print(li)

[11, 22, 11, 22, 11]
[22, 11, 22, 11]


# 列表元素反转
li = [11, 22, 33, 44, 55]
print(li)
li.reverse() # 反转列表元素
print(li)
[11, 22, 33, 44, 55]
[55, 44, 33, 22, 11]
 
# 统计某一元素在列表中的个数
li = [23, 342, 22, 42, 22]
cu = li.count(22)  # 统计某一元素在列表中的个数
print(cu)


2

#列表数组排序
li = [22, 12, 212, 13, 423]
li.sort()
print(li)
[12, 13, 22, 212, 423]
 #如果需要一个排序好的副本,同时保持原有列表不变
a =[4, 6, 2, 1, 7, 9]
b = a[ : ]
b.sort()
print b #[1, 2, 4, 6, 7, 9]
print a #[4, 6, 2, 1, 7, 9]
#注意:b = a[:] 通过分片操作将列表a的元素全部拷贝给b,如果简单的把a赋值给b:b = a,b和a还是指向同一个列表,并没有产生新的副本

 
字典

 1 #encoding=utf-8  
 2   
 3 print '中国'  
 4   
 5 #字典的一键多值  
 6   
 7 print'方案一 list作为dict的值 值允许重复'    
 8   
 9 d1={}  
10 key=1  
11 value=2  
12 d1.setdefault(key,[]).append(value)  
13 value=2  
14 d1.setdefault(key,[]).append(value)  
15   
16 print d1  
17   
18 #获取值  
19 print '方案一 获取值'  
20 print list(d1[key])  
21   
22 print '方案一 删除值,会留下一个空列表'  
23 d1[key].remove(value)  
24 d1[key].remove(value)  
25 print d1   
26   
27 print '方案一 检查是否还有一个值'  
28 print d1.get(key,[])  
29   
30 print '方案二 使用子字典作为dict的值 值不允许重复'  
31   
32 d1={}  
33 key=1  
34 keyin=2  
35 value=11  
36 d1.setdefault(key,{})[keyin]=value  
37 keyin=2  
38 value=22  
39 d1.setdefault(key,{})[keyin]=value  
40 keyin=3  
41 value=33  
42 d1.setdefault(key,{})[keyin]=value  
43   
44 print d1  
45   
46 print '方案二 获取值'  
47 print list(d1[key])  
48   
49 print '方案二 删除值,会留下一个空列表'  
50 del d1[key][keyin]  
51 keyin=2  
52 del d1[key][keyin]  
53 print d1  
54   
55 print '方案二 检查是否还有一个值'  
56 print d1.get(key,())  
57   
58 print '方案三 使用set作为dict的值 值不允许重复'  
59 d1={}  
60 key=1  
61 value=2  
62 d1.setdefault(key,set()).add(value)  
63 value=2  
64 d1.setdefault(key,set()).add(value)  
65 value=3  
66 d1.setdefault(key,set()).add(value)  
67   
68 print d1  
69   
70 print '方案三 获取值'  
71 print list(d1[key])  
72   
73 print '方案三 删除值,会留下一个空列表'  
74 d1[key].remove(value)  
75 value=2  
76 d1[key].remove(value)  
77 print d1   
78   
79 print '方案三 检查是否还有一个值'  
80 print d1.get(key,())  

根据上面的实例我们完成一个实验:

如下 :

li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
dic = {}
将 li列表内所有数字分类,即将所有大于66的数字保存至字典的第一个KEY中,将所有小于等于66的数字保存至第二个KEY中
{key1} 大于66 {key2} 小于等于66

根据题目我自解的代码是:
 1 #!/usr/bin/env python3
 2 # -*-coding:utf8-*-
 3 
 4 li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
 5 dic = {}
 6 for i in li:
 7     if i > 66:
 8         dic.setdefault("k1", set()).add(i)
 9     else:
10         dic.setdefault("k2", set()).add(i)
11 print(dic)

运行结果是:

{'k2': {33, 66, 11, 44, 22, 55}, 'k1': {88, 90, 99, 77}}


字典其它一些测试

#!/usr/bin/env python3.5
# -*-coding:utf8-*-

# tu = (0, 2, 3, 4,)
# tu = tuple((11, 22, 34,))
# tu = tuple([11, 22, 33, 34])

# dic = {"k1": "v1", "k2": "v2"}
# dic = dict(k1="v1", k2="v2")
# new_dict = dic.fromkeys(['k1', 'k2'], 'v1')  # 将这些KEY 生成一个新的字典
# print(new_dict)

# dic = {"k1": "v1", "k2": "v2"}
# print(dic["k1"])
# print(dic["k2"])
# print(dic["k3"])  # 出错
#
# print(dic.get("k1"))
# print(dic.get("k2"))
# print(dic.get("k3", "alex"))  # 如果KEY不存在 会默认使用值"alex"
#
# dic = {"k1": "v1", "k2": "v2"}
#
# print(dic.keys())
# print(dic.values())
# print(dic.items())  # 键值对
#
# for k in dic.keys():
#     print(k)
# for v in dic.values():
#     print(v)
# for k, v in dic.items():
#     print(k, v)

#
# dic = {"k1": "v1", "k2": "v2"}
# pp_dic = dic.pop("k1")  # 必须加参数,指定一个KEY  因字典是无序的
# print(dic)
# print(pp_dic)
#
# dic.popitem()    # 随机删除一对键值
# print(dic)

# dic = {"k1": "v1", "k2": "v2"}
# dic['k3'] =123
# dic.setdefault('k4')
# print(dic)    # 没什么用

# dic = {"k1": "v1", "k2": "v2"}
# ret = dic.update({"k3": 123})   #
# print(dic)
# print(ret)



原文地址:https://www.cnblogs.com/IPYQ/p/5388140.html