更新python字典

你好...
我有一个密钥/值的命令,我想更改基于它的键
在另一个映射字典上.一个示例如下:
mapping_dict = {
'a':'a',
'b':'b',
}
my_dict = {
'a':'1',
'b':'2'
}
我希望完成的my_dict看起来像:
my_dict = {
'a':'1',
'b':'2'
}
因此,原始my_dict中的键已换成
映射在Mapping_dict中的键.
有没有聪明的方法来做到这一点,或者我应该循环通过,
本质上可以创建一个全新的命令?
干杯,
安迪.

# 回答1


在2008年9月7日在阳光下14:51:32 -0700,anthydedeydeyder@gmail.com写道:
您只需要循环浏览" my_dict":
在[187]中:%cpaste
粘贴代码;输入' - 单独在线停止.
:mapping_dict = {
:'a':'a',
:'b':'b',
:}}
:
:my_dict = {
:'a':'1',
:'b':'2'
:}}
: -
在[188]中:dict(((mapping_dict [k],v)for my_dict.iteritems())
out [188]:{'a':'1','b':'2'}
再见,
marc'blackjack'rintsch
# 回答2


在9月7日,2:51*PM," Andyh ...@gmail.com" 您可以使用类似于以下内容来完成此操作:
new_dict = {}
对于mapping_dict.keys()中的x:
如果x in my_dict.keys():
new_dict [mapping_dict [x]] = my_dict [x]
尽管可能有更好的解决方案解决问题
有.也许更多的细节可以帮助我们领导您的权利
方向?
Cheers,Mk
# 回答3

anthydedeby@gmail.com写道:
由于您的词典都不包含您在决赛中想要的键
词典,创建一个全新的dict对我来说听起来很聪明.
# 回答4


你好,
有"永远"的"聪明"方式
做任何事情,但:
$ cat test.py
mapping_dict = {'a':'a','b':'b',},}
my_dict = {'a':'1','b':'2'}
my_dict = dict(((mapping_dict [k],my_dict [k])for my_dict中的k)
打印my_dict
$ python test.py
{'a':'1','b':'2'}
$
这应该够了吧.
干杯
詹姆士
在2008年9月8日星期一上午7:51上午,andydedeydedydey@gmail.com - -
- -
- "通过方法解决问题"
# 回答5


En Sun,2008年9月7日,18:51:32 -0300,anthydedeydeydey@gmail.com 确切地.您可以在一次通行证中做到这一点:
my_new_dict = dict(((mapping_dict [k],v)for my_dict.iteritems())
如果Mapping_dict始终包含所有键,那就足够了.如果您想将不变的旧密钥保持不变,请改用mapping_dict.get(k,k).其他角案例包括多对一映射,以及不完整的映射,其中替换键也是未映射的旧键.
- -
Gabriel Genellina
# 回答6


在9月8日,7:51*AM," Andyh ...@gmail.com" 这是作业吗?
到目前为止,答案中似乎有一个隐含的假设
您的映射是所有可能输入键的1:1映射.
如果不包括所有可能的输入键,答案将随着
一个钥匙扣.如果映射中有很多:1个元素(对于
示例,{'a':'a','b':'a'}),损失发生.您可能希望编码
在一些检查中.
# 回答7

2008年9月8日星期一,上午8:37,约翰·马奇(John Machin) 我希望不是 - 否则我会很生气:)
你说的很对!但是他/她没有
要求这个权利吗? :)
干杯
詹姆士
- -
- -
- "通过方法解决问题"
# 回答8


在9月8日,8:42*AM," James Mills" 你说的很对!但是他/她没有
要求这个权利吗? :)
您的意思是"此权利"?也许是神的权利,
经理,考官,业务分析师等永远不会给
规格前面,永远不要考虑墨菲的后果
法律?
# 回答9


约翰·马奇(John Machin)在阳光下,2008年9月7日15:59:52 -0700写道:你是对的!但是后来他/她没有要求这个权利吗? :)
您的意思是"此权利"?也许是神的权利,
经理,考官,业务分析师等永远不会给
规格前面,从不考虑墨菲定律的后果?

我 *认为 *詹姆斯·米尔斯的意思是:
"但是他/她没有要求这个逗号吗?"
- -
史蒂文

# 回答10


在2008年9月8日星期一上午8:59上午,约翰·马奇(John Machin) 现在你很傻.
- -
- -
- "通过方法解决问题"
# 回答11


在9月7日,3:37*PM,John Machin 这是作业吗?
到目前为止,答案中似乎有一个隐含的假设
您的映射是所有可能输入键的1:1映射.
如果不包括所有可能的输入键,答案将随着
一个钥匙扣.如果映射中有很多:1个元素(对于
示例,{'a':'a','b':'a'}),损失发生.您可能希望编码
在一些检查中.
那正是为什么我在帖子中进行明确检查的原因,以便
确保不会发生这种碰撞.似乎
我发布的东西会比优雅,甚至不那么优雅,而不是
其他.
欢呼,MK
# 回答12


在9月8日,10:47*AM,MK Bernard 那正是为什么我在帖子中进行明确检查的原因,以便
确保不会发生这种碰撞.似乎
我发布的东西会比优雅,甚至不那么优雅,而不是
其他.
我注意到两个问题:
(1)不涵盖所有输入键:您的代码明确扫描此
地毯下的问题,并在费力地做到了...
如果x in my_dict.keys():
代替
如果x在my_dict中:
(2)不是1:1映射 - 例如,'a'和'b'都映射到'a'(
我能看到的只是"碰撞"),但您不会解决这个问题.
这是一些试图覆盖基础的代码:
new_dict = {}
对于my_dict中的关键:
如果不在mapping_dict中的键:
提高nomaperror(" blah%r'%键)
别的:
new_key = mapping_dict [key]
如果new_dict中的new_key:
提高ManytooneError('gurgle%r waffle%r'%(key,new_key))
别的:
new_dict [new_key] = my_dict [key]
考虑了检查中实际需要的东西
条件,一个或两个 提高声明可能被其他
代码,然后简化了,例如循环中的前4行可能会结束
被取代
new_key = mapping_dict.get(键,键)
正如一位受访者所建议的那样.
请注意,对于此类键换练习的任何有用的用例
在mapping_dict中,可能比my_dict中有更多的项目(a
大语言词典和文本的一些片段
"翻译"),反之亦然(小同义词字典(颜色 - >)
颜色,中心 - 中心)和要"标准化"的大输入)
询问哪个可能较小的是一个好主意
如果要求允许,请迭代.
# 回答13


在9月8日,9:14*上午,"詹姆斯·米尔斯"
现在你很傻.
只有在我遵循OPS之类的习惯上,
"从不"而不是"很少".
# 回答14


在9月8日,10:20*AM,John Machin 我注意到两个问题:
(1)不涵盖所有输入键:您的代码明确扫描此
地毯下的问题,并在费力地做到了...
* *如果x在my_dict.keys()中:
代替
* *如果在my_dict中x:
(2)不是1:1映射 - 例如,'a'和'b'都映射到'a'(
我能看到的只是"碰撞"),但您不会解决这个问题.
这是一些试图覆盖基础的代码:
new_dict = {}
对于my_dict中的关键:
* *如果不在mapping_dict中的键:
* * * *提高nomaperror('blah%r'%键)
* * 别的:
* * * * new_key = mapping_dict [key]
* *如果new_dict中的new_key:
* * * *筹集许多tooneerror('gurgle%r waffle%r'%(key,new_key))
* * 别的:
* * * * new_dict [new_key] = my_dict [key]
考虑了检查中实际需要的东西
条件,一个或两个提高声明可以由其他陈述代替
代码,然后简化了,例如循环中的前4行可能会结束
被取代
* * new_key = mapping_dict.get(键,键)
正如一位受访者所建议的那样.
请注意,对于此类键换练习的任何有用的用例
在mapping_dict中,可能比my_dict中有更多的项目(a
大语言词典和文本的一些片段
"翻译"),反之亦然(小同义词字典(颜色 - >)
颜色,中心 - 中心)和要"标准化"的大输入)
询问哪个可能较小的是一个好主意
如果要求允许,请迭代.
为了学术界的利益(尽管这不是作业:)
回答其中一些问题:
- 是的,映射dict不一定具有相同的数量
作为my_dict的条目.它可能比它少或比它更多.
- 映射中永远不会有键或价值的骗局.尽管
也许在my_dict中.
而且,要获得额外的信用,能够"翻译"
my_dict再次使用相同的映射_Dict返回.即,使用值
在映射中,绘制为my_dict中的新键,而钥匙为新键
值.
安迪.
# 回答15


o n 9月9日,6:12*am," andyh ...@gmail.com"

标签: python

添加新评论