python字典多键值及重复键值的使用方法(详解)

来源:互联网 发布:网线接入网络方式 编辑:程序博客网 时间:2024/05/17 01:41

在Python中使用字典,格式如下:

?
1
dict={ key1:value1 , key2;value2 ...}

在实际访问字典值时的使用格式如下:

?
1
dict[key]

多键值

字典的多键值形式如下:

?
1
dict={(ke11,key12):value ,(key21,key22):value ...}

在实际访问字典里的值时的具体形式如下所示(以第一个键为例):

?
1
dict[key11,key12]

或者是:

?
1
dict[(key11,key12)]

以下是实际例子:

多值

在一个键值对应多个值时,格式:

?
1
dict={key1:(value1,value2 ..), key2:(value1,value2 ...) ...}

访问字典里的值的格式如下:

?
1
dict[key]

或者

?
1
dict[key][index]

循环赋值(重点)

语法结构如以下实例所示

总结:

通过以上的说明,可以知道在字典的定义中, 冒号( : ) 号前后是分别是一个整体,即使用小括号()将冒号前后部分分别包括起来,在访问字典值时,最好把键放在小括号内成为一个整体。

键值相同的多个键值对

即在字典中,有至少两个成员的键相同,但是键对应的值是不同的,格式如下:

?
1
2
3
dict={ key1: value1
key1: vaklue2,
... }

在这种形式形式中在后来赋给键的值将成为键的真实值。

使用列表、字典作为字典的值

格式

?
1
2
3
dict={ key1:(key11:value,key12:value) ,
key2:(key21:value,key22:value)
}

访问字典值得格式(以第一个键为例):

?
1
dict[key1][key11]

实际例子如下所示:


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

打印结果:

中国
方案一 list作为dict的值 值允许重复
{1: [2, 2]}

获取值
[2, 2]
删除值,会留下一个空列表
{1: []}
检查是否还有一个值
[]


方案二 使用子字典作为dict的值 值不允许重复
{1: {2: 22, 3: 33}}
获取值
[2, 3]
删除值,会留下一个空列表
{1: {}}
检查是否还有一个值
{}


方案三 使用set作为dict的值 值不允许重复
{1: set([2, 3])}
获取值
[2, 3]
删除值,会留下一个空列表
{1: set([])}
检查是否还有一个值
set([])


0 0
原创粉丝点击