企业网站建设费用记入什么科目,千库网素材免费下载,河南洛阳网站建设,手机资讯网站源码字典方法
与其他内置类型一样#xff0c;字典也有方法。字典的方法很有用#xff0c;但其使用频率可能不高。
1. clear
方法clear删除所有的字典项#xff0c;这中操作时就地执行的#xff08;就像list.sort一样#xff09;#xff0c;因此什么都不返回。
字典也有方法。字典的方法很有用但其使用频率可能不高。
1. clear
方法clear删除所有的字典项这中操作时就地执行的就像list.sort一样因此什么都不返回。 d{}d
{name: gumby}d.clear()d
{}这为何很有用呢我们来看俩个场景。下面是第一个场景:
x{}
yx
x[key]value
y
{key:value}
x{}
y
{key:value}
下面是第二个场景:
x{}
yx
x[key]value
y
{key:value}
x.clear()
y
{}
在这俩个场景中x和y最初都指向同一个字典。在第一个场景中我通过将一个空字典赋给x来清空它。这对y没有任何影响它依然指向原来的字典。这种行为可能正是你想要的但是要删除原来字典的所有元素必须使用clear。如果这样做y也是空的如第二个场景2. copy
方法copy返回一个新字典其包含的键-值与原来的字典相同(这个方法执行的是浅复制,因为值本身是原件而非副本)。 x{123:asdsad,qianfuzhi:[1,2,3,4]}yx.copy()y[123]hahahy[qianfuzhi].remove(1)x
{123: asdsad, qianfuzhi: [2, 3, 4]}y
{123: hahah, qianfuzhi: [2, 3, 4]}看到浅复制的含义了吗很迷惑是不是那就对了我们复制过来值都可以把他们想象成一个指针你可以拿c语言指针来解释我们复制过来的值恐怕是指针你直接操作字典中的值只需要改变指针指向就好了但是你要操作的是指针内部的数据那就不对了那x和y在’qianfuzhi’这项的值都是一样的指针你改变里边的数当然都会改变。这个要怎么改变呢就需要用到深复制 使用copy中的deepcopy函数解决仔细猜想一下深复制就是把值复制另一内存之后再把复制之后的指针给z所以操纵不影响原来的了仅仅是猜想 from copy import *x{123:asdsad,qianfuzhi:[1,2,3,4]}yx.copy()zdeepcopy(x)x[qianfuzhi].append(5)y
{123: asdsad, qianfuzhi: [1, 2, 3, 4, 5]}x
{123: asdsad, qianfuzhi: [1, 2, 3, 4, 5]}z3. fromkeys
方法fromkeys创建一个新字典其中包含指定的键且每个键对应的值都是none {}.fromkeys([asda,123,456])
{asda: None, 123: None, 456: None}如果你不想使用默认值none可以提供特定的值 {}.fromkeys([asda,123,456],123)
{asda: 123, 123: 123, 456: 123}4. get
方法get为访问字典项提供了宽松的环境。通常你试图访问字典中没有的项将引发异常。 d{}print(d[name])
Traceback (most recent call last):File stdin, line 1, in module
KeyError: name而使用get不会这样 print(d.get(name))
None如你水煎使用get来访问不存在的键时没有引发异常而是返回none。你可指定默认值 d.get(name,N/A)
N/A
如果字典包含的特定的键get的作用将与普通字典查找相同。pythond[123]123d.get(123)
1235. items
方法items返回一个包含所有字典项的一个列表其中每个元素都为(key,value)的形式。字典项在列表中的排列顺序不确定。 d.items()
dict_items([(123, 123)])返回值属于名为字典视图的特殊类型。字典视图可用于迭代另外你还可确定其长度以及对其执行成员资格检查。
视图的一个有点是不复制他始终是底层字典的反应即使你修改了底层字典也是如此 d
{123: 123, 234: 1}(234,0) in it
Falsed[234]0(234,0) in it
True
然而如果你要将字典项复制到列表中可以自己动手做 plist(d.items())
6. keys
方法keys返回一个字典视图其中包含指定字典中的键。
7. pop
方法pop可以用于获取与指定键相关联的值并将该键-值对从字典中删除 d
{123: 123, 234: 3}d.pop(123)
123d
{234: 3}8. popitem
方法popitem类似于list.pop但list.pop弹出列表最后一个元素popitem随机弹出一个字典项因为字典项的顺序是不确定的没有’最后一个元素的概念’。如果你要以高效地方式逐个删除并处理所有字典项这可能很有用
9. setdefault
方法setdefault有点像get因为它也获取与指定键相关的值但除此之外setdefault还在字典不包含指定的键在字典中添加指定的键-值对。 d{}d.setdefault(123,456)
456d
{123: 456}d.setdefault(123,123)
456d
{123: 456}如你所见指定键不存在时setdefault返回指定的值并相应地更新字典。 如果指定的值存在就返回其值并保持字典不变。与get一样值是可选的如果没有指定默认为none
10. update
方法update使用一个字典中的项来更新另一个字典。 d
{123: 456}e{123:789,1:34,2:23}d.update(e)d
{123: 789, 1: 34, 2: 23}对于通过参数提供的字典将其项添加到当前字典。如果当前字典包含键相同的项就替换它
10. value
方法values返回一个由字典中的值组成的字典视图。不同于方法keys方法values返回的视图可能有重复的值 d
{123: 789, 1: 34, 2: 23, 32: 34}d.values()
dict_values([789, 34, 23, 34])