python中怎么改变一个字典的对应键的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中怎么改变一个字典的对应键的值相关的知识,希望对你有一定的参考价值。

1、说明:
python中怎么改变一个字典的对应键的值很简单,直接赋值即可。

2、代码:
dic = \'key\': 100
print(dic[\'key\'])
dic[\'key\'] = 200  #修改字典的对应键的值
print(dic[\'key\'])

3、输出结果:
100
200


4、其它说明:
如果检测键值是否在字典中可以使用如下代码:
if \'newkey\' in dic:
    print(dic[\'newkey\'])
else:
    print(\'字典中不存在newkey键\')

参考技术A 最为简单的方法是利用表理解,生成一个新的字典
必须要保证键值是一一对应的
d = 'one':1, 'two':2, 'three':3, 'four':4
di = v:k for k,v in d.items()
di[1]本回答被提问者和网友采纳
参考技术B

直接赋值即可。

    代码:dic = 'key': 100print(dic['key'])dic['key'] = 200  #修改字典的对应键的值print(dic['key'])3、输出结果:100200。

    注意:如果检测键值是否在字典中可以使用如下代码:if 'newkey' in dic:    print(dic['newkey'])else:    print('字典中不存在newkey键')。

参考技术C

直接赋值,比如

d = 'v':1

d['v']=2

>>> d = 'v':1
>>> d
'v': 1
>>> d['v']=2
>>> d
'v': 2
>>>

参考技术D #示例:改变字典相应键的值,py3通过
dic=1:'a',2:'b','three':'d'
print(dic)
dic[1]='c' #改变键1的值
print(dic)
dic['three']=100 #改变键three的值
print(dic)

Python:如何根据键的值对字典进行切片?

【中文标题】Python:如何根据键的值对字典进行切片?【英文标题】:Python: how to slice a dictionary based on the values of its keys? 【发布时间】:2017-03-19 07:58:30 【问题描述】:

假设我有一个这样构建的字典:

d=0:1, 1:2, 2:3, 10:4, 11:5, 12:6, 100:7, 101:8, 102:9, 200:10, 201:11, 202:12

我想通过对d 进行切片来创建一个子字典d1,使d1 包含以下键:0, 1, 2, 100, 101, 102。最终输出应该是:

d1=0:1, 1:2, 2:3, 100:7, 101:8, 102:9

鉴于我的真实字典包含超过 2,000,000 项,是否有一种高效的 Pythonic 方式?

我认为这个问题适用于键是整数的所有情况,切片需要遵循某些不等式规则,以及最终结果需要将一堆切片放在同一个字典。

【问题讨论】:

这些规则从何而来?如果这些键没有值会发生什么?你有没有考虑过字典理解k: d[k] for k in [0, 1, ...] 就我而言,所有键都有值。 你不能真正“切片”字典,因为它是一个可变映射而不是一个序列。我认为听写理解是你最好的选择。 对字典进行切片并不是不可能的; Python 只是没有像 Perl 那样提供语法(尽管在 Perl 中,您只是返回相应的值,而不是哈希的子集)。 【参考方案1】:

你可以使用字典理解:

d = 0:1, 1:2, 2:3, 10:4, 11:5, 12:6, 100:7, 101:8, 102:9, 200:10, 201:11, 202:12
keys = (0, 1, 2, 100, 101, 102)
d1 = k: d[k] for k in keys

在 python 2.7 中,您还可以使用(在 python 3.x 中将 it.ifilter(...) 替换为 filter(...))计算键:

import itertools as it

d = 0:1, 1:2, 2:3, 10:4, 11:5, 12:6, 100:7, 101:8, 102:9, 200:10, 201:11, 202:12
d1 = k: d[k] for k in it.ifilter(lambda x: 1 < x <= 11, d.keys())

【讨论】:

嗯,我应该首先指出这一点。虽然我确实知道需要什么键,但它们太多了,无法明确地放在元组中。有没有办法使用不等式规则构造元组? @CF84:你对不等式规则的定义是什么?请分享完整的信息,我们无法读懂你的想法:) 一种定义可以是“草拟”所有键值大于和小于某个值x 的值。示例:06010001 &lt; x &lt;= 06012000. 查看我的更新答案。使用 python 3.x,您只需将 it.filter(...) 替换为 filter(...)【参考方案2】:

创建子词典的一种简洁方法是使用operator.itemgetter。此函数接受多个参数并返回一个新函数以返回一个包含给定迭代的相应元素的元组。

from operator import itemgetter as ig

k = [0, 1, 2, 100, 101, 102]
# ig(0,1,2,100,101,102) == lambda d : (d[0], d[1], d[2], d[100], d[101], d[102])
d1 = dict(zip(k, ig(*k)(d)))

【讨论】:

以上是关于python中怎么改变一个字典的对应键的值的主要内容,如果未能解决你的问题,请参考以下文章

如何展平Python字典中键的值(元组列表列表)?

Java中的Hashtable如何根据值获取键?

Python ❀ 字典

Python ❀ 字典

python 一个由字典构成的列表,修改其中1个字典的键的值,却把该列表所有字典相同的键的值都一起修改了?

Python初级-6字典