python--字典

本文介绍了Python中字典和列表的基本操作,包括初始化、遍历、修改、删除等,并详细解释了字典的更新、排序及深浅拷贝的区别。同时涵盖了列表的索引、切片、增删查改等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.字典

#字典的添加、删除、修改操作
dict = {"a" : "apple", "b" : "banana", "g" : "grape", "o" : "orange"}
dict["w"] = "watermelon"
del(dict["a"])
dict["g"] = "grapefruit"
print dict.pop("b")
print dict
dict.clear()
print dict
#字典的遍历
dict = {"a" : "apple", "b" : "banana", "g" : "grape", "o" : "orange"}
for k in dict:
    print "dict[%s] =" % k,dict[k]
#字典items()的使用
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
#每个元素是一个key和value组成的元组,以列表的方式输出
print dict.items()
#调用items()实现字典的遍历
dict = {"a" : "apple", "b" : "banana", "g" : "grape", "o" : "orange"}
for (k, v) in dict.items():
    print "dict[%s] =" % k, v
#调用iteritems()实现字典的遍历
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
print dict.iteritems()
for k, v in dict.iteritems():
    print "dict[%s] =" % k, v
for (k, v) in zip(dict.iterkeys(), dict.itervalues()):
    print "dict[%s] =" % k, v
   
#使用列表、字典作为字典的值
dict = {"a" : ("apple",), "bo" : {"b" : "banana", "o" : "orange"}, "g" : ["grape","grapefruit"]}
print dict["a"]
print dict["a"][0]
print dict["bo"]
print dict["bo"]["o"]
print dict["g"]
print dict["g"][1]
 
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
#输出key的列表
print dict.keys()
#输出value的列表
print dict.values()
#每个元素是一个key和value组成的元组,以列表的方式输出
print dict.items()
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
it = dict.iteritems()
print it
#字典中元素的获取方法
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
print dict
print dict.get("c", "apple")         
print dict.get("e", "apple")
#get()的等价语句
D = {"key1" : "value1", "key2" : "value2"}
if "key1" in D:
    print D["key1"]
else:
    print "None"
#字典的更新
dict = {"a" : "apple", "b" : "banana"}
print dict
dict2 = {"c" : "grape", "d" : "orange"}
dict.update(dict2)
print dict
#udpate()的等价语句
D = {"key1" : "value1", "key2" : "value2"}
E = {"key3" : "value3", "key4" : "value4"}
for k in E:
    D[k] = E[k]
print D
#字典E中含有字典D中的key
D = {"key1" : "value1", "key2" : "value2"}
E = {"key2" : "value3", "key4" : "value4"}
for k in E:
    D[k] = E[k]
print D
#设置默认值
dict = {}
dict.setdefault("a")
print dict
dict["a"] = "apple"
dict.setdefault("a","default")
print dict
#调用sorted()排序
dict = {"a" : "apple", "b" : "grape", "c" : "orange", "d" : "banana"}
print dict  
#按照key排序 
print sorted(dict.items(), key=lambda d: d[0])
#按照value排序 
print sorted(dict.items(), key=lambda d: d[1])
#字典的浅拷贝
dict = {"a" : "apple", "b" : "grape"}
dict2 = {"c" : "orange", "d" : "banana"}
dict2 = dict.copy()
print dict2

#字典的深拷贝
import copy
dict = {"a" : "apple", "b" : {"g" : "grape","o" : "orange"}}
dict2 = copy.deepcopy(dict)
dict3 = copy.copy(dict)
dict2["b"]["g"] = "orange"
print dict
dict3["b"]["g"] = "orange"
print dict

补充:
1 初始化
>>> d = dict(name='visaya', age=20)
>>> d = dict(zip(['name', 'age'], ['visaya', 20]))

#dict.fromkeys(listkeys, default=0) 把listkeys中的元素作为key均赋值为value,默认为0
>>> d = dict.fromkeys(['a', 'b'], 1)
>>> d
{'a': 1, 'b': 1}
2 字典视图和几何
dict.keys()类似信使可以进行交集和并集等集合操作(类似集合,因为不存在重复的项),但dict.values()不可以进行如上操作。


>>> k = d.keys()
>>> k
dict_keys(['a', 'b'])
>>> list(k)
['a', 'b']
>>> k | {'x': 3}
{'a', 'x', 'b'}
>>> k | {'x'}
{'a', 'x', 'b'}
>>> k | {'x', 'y'}
{'a', 'y', 'b', 'x'}
>>> k & {'x'}
set()
>>> v = d.values()
>>> v
dict_values([1, 2])
>>> v | {'x'}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for |: 'dict_values' and 'set'
3 排序字典键
两种方法:
3.1 sort:
>>> Ks = list(d.keys())
>>> Ks.sort()
>>> for k in Ks:
...     print(k, d[k])
... 
a 1
b 2
3.2 sorted:
>>> for k in sorted(d.keys()):
...     print(k, d[k])
... 
a 1
b 2

3.3 注意
>>> for k in list(d.keys()).sort():
...     print(k, d[k])
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not iterable


出错原因:
list.sort() list.append()函数都是对自身的操作,没有返回值,故需先将list(d.keys())的结果保存下来,在结果上进行sort()
4 常用函数
4.1 get()
D.get(k[, d])   => D[k] if k in D else d. d defaults to none.
4.2 pop()
D.pop(value[, d])   => Remove specified key and return the corresponding value. If key is not found, d is returned if given, otherwise KeyError is raised.
4.3 udpate()
    D.update(E, **F) -> None.  Update D from dict/iterable E and F.
    If E has a .keys() method, does:     for k in E: D[k] = E[k]
    If E lacks .keys() method, does:     for (k, v) in E: D[k] = v
    In either case, this is followed by: for k in F: D[k] = F[k]

>>> d = dict(name='visaya', age=21)
>>> d1= {'age': 20, 'sex': 'male'}
>>> d2 = zip(['a', 'b'], [1, 2])


>>> d.update(d1)
>>> d
{'age': 20, 'name': 'visaya', 'sex': 'male'}
#for k in d1: d[k] = d1[k]


>>> d.update(d2)
>>> d
{'age': 20, 'name': 'visaya', 'sex': 'male'}
#for (k, v) in d2: d[k] = v
4.4 del()
del D[key]
4.5 clear()
4.6 copy()
Python中的dict
初始化
构造方法创建
Python代码  
d = dict()  
d = dict(name="nico", age=23)  
d = dict((['name', "nico"], ['age', 23]))  
 当然还有更方便,简单的
Python代码  
d = {}  
d = {"name":"nico", "age":23}  
 
 
遍历
通过对key的遍历,遍历整个dict
 
Python代码  
d = {"name":"nico", "age":23}  
for key in d:  
    print "key=%s, value=%s" % (key, d[key])  
      
for key in d.iterkeys():  
    print "key=%s, value=%s" % (key, d[key])  
      
for key in d.keys():  
    print "key=%s, value=%s" % (key, d[key])  
      
for key in iter(d):  
    print "key=%s, value=%s" % (key, d[key])  
      
for key,item in d.items():  
    print "key=%s, value=%s" % (key, item)  
 
 当然也可以直接遍历value
 
Python代码  
d = {"name":"nico", "age":23}  
for value in d.values():  
    print value  
      
for key,value in d.viewitems():  
    print "key=%s, value=%s" % (key, value)  
  
for value in d.viewvalues():  
    print "value=%s" % (value)  
这里values和viewvalues的区别
 
后者返回的是该字典的一个view对象,类似数据库中的view,当dict改变时,该view对象也跟着改变
 
常用方法
 
Python代码  
d = {"name":"nico", "age":23}  
d["name"] = "aaaa"  
d["address"] = "abcdefg...."  
print d   #{'age': 23, 'name': 'aaaa', 'address': 'abcdefg....'}  
 
 
获取dict值
Python代码  
print d["name"]               #nico  
print d.get("name")         #nico  
 
 如果key不在dict中,返回default,没有为None
Python代码  
print d.get("namex", "aaa")       #aaa  
print d.get("namex")                  #None  
 
排序sorted()
Python代码  
d = {"name":"nico", "age":23}  
for key in sorted(d):  
    print "key=%s, value=%s" % (key, d[key])  
#key=age, value=23  
#key=name, value=nico  
 
 
删除del
Python代码  
d = {"name":"nico", "age":23}  
Python代码  
del d["name"]  
#如果key不在dict中,抛出KeyError  
del d["names"]  
Python代码  
Traceback (most recent call last):  
  File "F:\workspace\project\pydev\src\ddd\ddddd.py", line 64, in <module>  
    del d["names"]  
KeyError: 'names'  
 
 
清空clear()
Python代码  
d = {"name":"nico", "age":23}  
d.clear()  
print d                                                    #{}  
 
copy()
Python代码  
d1 = d.copy()               #{'age': 23, 'name': 'nico'}  
#使用返回view对象  
d2 = d1.viewitems()    #dict_items([('age', 23), ('name', 'nico')])  
#修改字典d1,新增元素  
d1["cc"] = "aaaaaa"   
print d2                   
#dict_items([('cc', 'aaaaaa'), ('age', 23), ('name', 'nico')])  
 
 
pop(key[, default])
如果key在dict中,返回,不在返回default
Python代码  
#如果key在dict中,返回,不在返回default  
print d.pop("name", "niccco")                #nico  
print d.pop("namezzz", "niccco")           #niccco  
#key不在dict中,且default值也没有,抛出KeyError  
print d.pop("namezzz")                         #此处抛出KeyError  
 
popitem()
删除并返回dict中任意的一个(key,value)队,如果字典为空会抛出KeyError
Python代码  
d = {"name":"nico", "age":23}  
print d.popitem()       #('age', 23)  
print d.popitem()       #('name', 'nico')  
#此时字典d已为空  
print d.popitem()      #此处会抛出KeyError  
 
update([other])
将字典other中的元素加到dict中,key重复时将用other中的值覆盖
Python代码  
d = {"name":"nico", "age":23}  
d2 = {"name":"jack", "abcd":123}  
d.update(d2)  

print d     #{'abcd': 123, 'age': 23, 'name': 'jack'}  


======================

补充知识

一: dictionary 操作:

     Dictionary:定义了键和值之间一对一的关系,像 Visual Basic 中的 Scripting.Dictionary 对象的实例;像 Java 中的 Hashtable 类的实例;像 Perl 中的 hash (哈希数组)。在 Perl 中,存储哈希值的变量总是以 % 字符开始;在 Python 中,变量可以任意取名,并且 Python 在内部会记录下其数据类型。
     1.定义 Dictionary:
          >>> d = {"server":"mpilgrim", "database":"master"} 

          >>> d
           {'server': 'mpilgrim', 'database': 'master'}
          >>> d["server"]                                    

           'mpilgrim'
          >>> d["database"]                                 

           'master'
    新 dictionary,它有两个元素,将其赋给变量 d 。每一个元素都是一个 key-value 对;整个元素集合用大括号括起来。
'server' 是一个 key,它所关联的值是通过 d["server"] 来引用的,为 'mpilgrim'。
'database' 是一个 key,它所关联的值是通过 d["database"] 来引用的,为 'master'。
      可以通过 key 来引用其值,但是不能通过值获取 key,
         >>> d["mpilgrim"]                                  (4)
          Traceback (innermost last):
             File "<interactive input>", line 1, in ?
          KeyError: mpilgrim

      2.修改 Dictionary
 
       >>> d["database"] = "pubs" (1)
       >>> d
        {'server': 'mpilgrim', 'database': 'pubs'}
       >>> d["uid"] = "sa"        (2)
       >>> d
        {'server': 'mpilgrim', 'uid': 'sa', 'database': 'pubs'}

  一个 dictionary 中不能有重复的 key。给一个存在的 key 赋值会覆盖原有的值。Dictionary 没有元素顺序的概念,它们只是序偶的简单排列。dictionary 的 key 是大小写敏感的。

       >>> d = {}
       >>> d["key"] = "value"
       >>> d["key"] = "other value" (1)
       >>> d
         {'key': 'other value'}
       >>> d["Key"] = "third value" (2)
       >>> d
         {'Key': 'third value', 'key': 'other value'}
为一个已经存在的 dictionary key 赋值,将简单覆盖原有的值。这不会为一个已经存在的 dictionary key 赋值,因为在 Python 中是区分大小写的,也就是说 'key' 与 'Key' 是不同的。所以这种情况将在 dictionary 中创建一个新的 key-value 对。Dictionary 不只是用于存储字符串。Dictionary 的值可以是任意数据类型,包括字符串、整数、对象,甚至其它的 dictionary。在单个 dictionary 里,dictionary 的值并不需要全都是同一数据类型,可以根据需要混用和匹配。

    3.dictionary 中删除元素
    >>> d
     {'server': 'mpilgrim', 'uid': 'sa', 'database': 'master',42: 'douglas', 'retrycount': 3}
    >>> del d[42] (1)
    >>> d
     {'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 'retrycount': 3}
    >>> d.clear() (2)
    >>> d
     {}

del 允许您使用 key 从一个 dictionary 中删除独立的元素。
clear 从一个 dictionary 中清除所有元素。注意空的大括号集合表示一个没有元素的 dictionary。

 

二、List 操作

    List 是 Python 中使用最频繁的数据类型, 如同 Perl 中的数组。在 Perl 中,用来保存数组的变量总是以 @ 字符开始;在 Python 中,变量可以任意取名,并且 Python 在内部会记录下其数据类型。 更像 Java 中的数组 (您可以简单地这样理解,但 Python 中的 list 远比 Java 中的数组强大)。一个更好的类比是 ArrayList 类,它可以保存任意对象,并且可以在增加新元素时动态扩展。
    1. 定义 List
     >>> li = ["a", "b", "mpilgrim", "z", "example"] 

     >>> li
      ['a', 'b', 'mpilgrim', 'z', 'example']
     >>> li[0]                                      

      'a'
     >>> li[4]                                     

      'example'
List 是一个用方括号包括起来的有序元素的集合。
List 可以作为以 0 下标开始的数组。任何一个非空 list 的第一个元素总是 li[0]。
这个包含 5 个元素 list 的最后一个元素是 li[4],因为列表总是从 0 开始。

     2.list负索引
       >>> li
        ['a', 'b', 'mpilgrim', 'z', 'example']
       >>> li[-1] (1)
        'example'
       >>> li[-3] (2)
        'mpilgrim'
负数索引从 list 的尾部开始向前计数来存取元素。任何一个非空的 list 最后一个元素总是 li[-1]。如果负数索引使您感到糊涂,可以这样理解:li[-n] == li[len(li) - n]。所以在这个 list 里,li[-3] == li[5 - 3] == li[2]

     3.list 的索引
      >>> li
       ['a', 'b', 'mpilgrim', 'z', 'example']
      >>> li[1:3]  (1)
       ['b', 'mpilgrim']
      >>> li[1:-1] (2)
       ['b', 'mpilgrim', 'z']
      >>> li[0:3]  (3)
       ['a', 'b', 'mpilgrim']

(1):您可以通过指定 2 个索引得到 list 的子集,叫做一个 “slice” 。返回值是一个新的 list,它包含了 list 中按顺序从第一个 slice 索引 (这里为 li[1]) 开始,直到但是不包括第二个 slice 索引 (这里为 li[3]) 的所有元素。

(2):如果一个或两个 slice 索引是负数,slice 也可以工作。如果对您有帮助,您可以这样理解:从左向右阅读 list,第一个 slice 索引指定了您想要的第一个元素,第二个 slice 索引指定了第一个您不想要的元素。返回的值为在其间的每个元素。

(3):List 从 0 开始,所以 li[0:3] 返回 list 的前 3 个元素,从 li[0] 开始,直到但不包括 li[3]。

       4.list 的索引简写

        >>> li
         ['a', 'b', 'mpilgrim', 'z', 'example']
        >>> li[:3] (1)
         ['a', 'b', 'mpilgrim']
        >>> li[3:] (2) (3)
         ['z', 'example']
        >>> li[:]  (4)
         ['a', 'b', 'mpilgrim', 'z', 'example']

(1):如果左侧分片索引为 0,您可以将其省略,默认为 0。所以 li[:3] 同 例 3.8 中的li[0:3] 是一样的。
(2):同样的,如果右侧分片索引是 list 的长度,可以将其省略。所以 li[3:] 同 li[3:5] 是一样的,因为这个 list 有 5 个元素。
(3):请注意这里的对称性。在这个包含 5 个元素的 list 中,li[:3] 返回前 3 个元素,而 li[3:] 返回后 2 个元素。实际上,li[:n] 总是返回前 n 个元素,而 li[n:] 将返回剩下的元素,不管 list 有多长。
(4):如果将两个分片索引全部省略,这将包括 list 的所有元素。但是与原始的名为 li 的 list 不同,它是一个新 list,恰好拥有与 li 一样的全部元素。li[:] 是生成一个 list 完全拷贝的一个简写。

         5. list 中增加元素

           >>> li
             ['a', 'b', 'mpilgrim', 'z', 'example']
           >>> li.append("new")               (1)
           >>> li
             ['a', 'b', 'mpilgrim', 'z', 'example', 'new']
           >>> li.insert(2, "new")            (2)
           >>> li
             ['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new']
           >>> li.extend(["two", "elements"]) (3)
           >>> li
           ['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']

append 向 list 的末尾追加单个元素。
insert 将单个元素插入到 list 中。数值参数是插入点的索引。请注意,list 中的元素不必唯一,现在有两个独立的元素具有 'new' 这个值,li[2] 和 li[6]。
extend 用来连接 list。请注意不要使用多个参数来调用 extend,要使用一个 list 参数进行调用。在本例中,这个 list 有两个元素。

 注:extend (扩展) 与 append (追加) 的差别:

        >>> li = ['a', 'b', 'c']
       >>> li.extend(['d', 'e', 'f']) (1)
       >>> li
        ['a', 'b', 'c', 'd', 'e', 'f']
      >>> len(li)                    (2)
        6
      >>> li[-1]
       'f'
     >>> li = ['a', 'b', 'c']
     >>> li.append(['d', 'e', 'f']) (3)
     >>> li
       ['a', 'b', 'c', ['d', 'e', 'f']]
     >>> len(li)                    (4)
      4
     >>> li[-1]
     ['d', 'e', 'f']

Lists 的两个方法 extend 和 append 看起来类似,但实际上完全不同。extend 接受一个参数,这个参数总是一个 list,并且把这个 list 中的每个元素添加到原 list 中。在这里 list 中有 3 个元素 ('a'、'b' 和 'c'),并且使用另一个有 3 个元素('d'、'e' 和 'f') 的 list 扩展之,因此新的 list 中有 6 个元素。
另一方面,append 接受一个参数,这个参数可以是任何数据类型,并且简单地追加到 list 的尾部。在这里使用一个含有 3 个元素的 list 参数调用 append 方法。原来包含 3 个元素的 list 现在包含 4 个元素。为什么是 4 个元素呢?因为刚刚追加的最后一个元素本身是个 list。List 可以包含任何类型的数据,也包括其他的 list。这或许是您所要的结果,或许不是。如果您的意图是 extend,请不要使用 append。

 

     6.在 list 中搜索

          >>> li
            ['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
          >>> li.index("example") (1)
             5
          >>> li.index("new")     (2)
             2
         >>> li.index("c")       (3)
           Traceback (innermost last):
             File "<interactive input>", line 1, in ?
           ValueError: list.index(x): x not in list
         >>> "c" in li           (4)
           False

index 在 list 中查找一个值的首次出现并返回索引值。
index 在 list 中查找一个值的首次 出现。这里 'new' 在 list 中出现了两次,在 li[2] 和 li[6],但 index 只返回第一个索引,2。如果在 list 中没有找到值,Python 会引发一个异常。为它说明您的程序会由于源代码的问题而崩溃,好于在后面当您使用无效索引而引起崩溃。
要测试一个值是否在 list 内,使用 in。如果值存在,它返回 True,否则返为 False 。


         7.从 list 中删除元素

             >>> li
               ['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
             >>> li.remove("z")   (1)
             >>> li
               ['a', 'b', 'new', 'mpilgrim', 'example', 'new', 'two', 'elements']
             >>> li.remove("new") (2)
             >>> li
               ['a', 'b', 'mpilgrim', 'example', 'new', 'two', 'elements']
             >>> li.remove("c")   (3)
               Traceback (innermost last):
                 File "<interactive input>", line 1, in ?
               ValueError: list.remove(x): x not in list
             >>> li.pop()         (4)
               'elements'
             >>> li
               ['a', 'b', 'mpilgrim', 'example', 'new', 'two']

remove 从 list 中删除一个值的首次出现。
remove 仅仅 删除一个值的首次出现。在这里,'new' 在 list 中出现了两次,但 li.remove("new") 只删除了 'new' 的首次出现。
如果在 list 中没有找到值,Python 会引发一个异常来响应 index 方法。
pop 是一个有趣的东西。它会做两件事:删除 list 的最后一个元素,然后返回删除元素的值。请注意,这与 li[-1] 不同,后者返回一个值但不改变 list 本身。也不同于 li.remove(value),后者改变 list 但并不返回值。

 

       8.使用 list 的运算符

           >>> li = ['a', 'b', 'mpilgrim']
           >>> li = li + ['example', 'new'] (1)
           >>> li
            ['a', 'b', 'mpilgrim', 'example', 'new']
           >>> li += ['two']                (2)
           >>> li
            ['a', 'b', 'mpilgrim', 'example', 'new', 'two']
           >>> li = [1, 2] * 3              (3)
           >>> li
            [1, 2, 1, 2, 1, 2]

Lists 也可以用 + 运算符连接起来。list = list + otherlist 相当于 list.extend(otherlist)。但 + 运算符把一个新 (连接后) 的 list 作为值返回,而 extend 只修改存在的 list。也就是说,对于大型 list 来说,extend 的执行速度要快一些。
Python 支持 += 运算符。li += ['two'] 等同于 li.extend(['two'])。+= 运算符可用于 list、字符串和整数,并且它也可以被重载用于用户自定义的类中 (更多关于类的内容参见 第 5 章)。
* 运算符可以作为一个重复器作用于 list。li = [1, 2] * 3 等同于 li = [1, 2] + [1, 2] + [1, 2],即将三个 list 连接成一个。

 

三、Tuple 介绍
    Tuple 是不可变的 list。一旦创建了一个 tuple,就不能以任何方式改变它。 Tuple 没有方法,您不能向 tuple 增加元素。Tuple 没有 append 或 extend 方法。您不能从 tuple 删除元素。Tuple 没有 remove 或 pop 方法。您不能在 tuple 中查找元素。Tuple 没有 index 方法。然而,您可以使用 in 来查看一个元素是否存在于 tuple 中。

     1.定义 tuple
        >>> t = ("a", "b", "mpilgrim", "z", "example") (1)
        >>> t
         ('a', 'b', 'mpilgrim', 'z', 'example')
        >>> t[0]                                       (2)
         'a'
        >>> t[-1]                                      (3)
         'example'
        >>> t[1:3]                                     (4)
         ('b', 'mpilgrim')

定义 tuple 与定义 list 的方式相同,但整个元素集是用小括号包围的,而不是方括号。
Tuple 的元素与 list 一样按定义的次序进行排序。Tuples 的索引与 list 一样从 0 开始,所以一个非空 tuple 的第一个元素总是 t[0]。
负数索引与 list 一样从 tuple 的尾部开始计数。
与 list 一样分片 (slice) 也可以使用。注意当分割一个 list 时,会得到一个新的 list ;当分割一个 tuple 时,会得到一个新的 tuple。
那么使用 tuple 有什么好处呢?
1.Tuple 比 list 操作速度快。如果您定义了一个值的常量集,并且唯一要用它做的是不断地遍历它,请使用 tuple 代替 list。
2.如果对不需要修改的数据进行 “写保护”,可以使代码更安全。使用 tuple 而不是 list 如同拥有一个隐含的 assert 语句,说明这一数据是常量。如果必须要改变这些值,则需要执行 tuple 到 list 的转换 (需要使用一个特殊的函数)。
3.Tuples 可以在 dictionary 中被用做 key,但是 list 不行。实际上,事情要比这更复杂。Dictionary key 必须是不可变的。Tuple 本身是不可改变的,但是如果您有一个 list 的 tuple,那就认为是可变的了,用做 dictionary key 就是不安全的。只有字符串、整数或其它对 dictionary 安全的 tuple 才可以用作 dictionary key。
4.Tuples 可以用在字符串格式化中。

Tuple 可以转换成 list,反之亦然。内置的 tuple 函数接收一个 list,并返回一个有着相同元素的 tuple。而 list 函数接收一个 tuple 返回一个 list。从效果上看,tuple 冻结一个 list,而 list 解冻一个 tuple。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值