在 Python 中正确更新字典中的键?
Updating correctly keys in dictionary in Python?
我有一个字典 (d2),我必须创建一个只包含满足条件的键的新字典 (new_dict)。
这是我的代码:
d2 = dict((y,x) for x,y in d.iteritems())
new_dict={}
for name in list:
for keyx in d2:
if name in keyx:
new_dict=dict((keyx,d2[keyx]) for v in d2.itervalues())
print new_dict
但是当我打印 new_dict 时,我为每个键获得了一个 new_dict :
{key:value}
{key2:value2}
ecc..
怎样才能获得唯一的字典??
下面是一个例子。
>>> f={'c':1,'d':2,'e':3}
>>> l=['c','d']
>>> {i:f[i] for i in f if any([k in i for k in l])}
{'c': 1, 'd': 2}
对于您的用例,它只是。
new_dict = {i:d2[i] for i in d2 if any([k in i for k in list])}
也就是说,请避免使用像list
这样的变量名。
此外,而不是
d2 = dict((y,x) for x,y in d.iteritems())
你可以做到
d2 = {y:x for x,y in d.iteritems()}
只需像 -
一样更新您的代码
d2 = dict((y,x) for x,y in d.iteritems())
new_dict={}
for name in list:
for keyx in d2:
if name in keyx:
new_dict[keyx] = d2[keyx]
print new_dict
你做错的是在循环中一次又一次地制作字典...
当你写这篇文章时 -
new_dict[keyx] = dict('key' = 'something')
新词典已创建,这就是您遇到问题的原因...
您可以像其他答案一样以更多 pythonic 方式解决它...
您需要使用找到的新项目更新 new_dict
,而不是每次都重新创建一个新词典。这是一个例子:
d2 = {'a': 1, 'b': 2, 'ab': 3}
l = ['a']
new_dict = dict([(k, v) for k, v in d2.items() if any(x in k for x in l)])
print new_dict
这将输出:
{'a': 1, 'ab': 3}
我有一个字典 (d2),我必须创建一个只包含满足条件的键的新字典 (new_dict)。
这是我的代码:
d2 = dict((y,x) for x,y in d.iteritems())
new_dict={}
for name in list:
for keyx in d2:
if name in keyx:
new_dict=dict((keyx,d2[keyx]) for v in d2.itervalues())
print new_dict
但是当我打印 new_dict 时,我为每个键获得了一个 new_dict :
{key:value}
{key2:value2}
ecc..
怎样才能获得唯一的字典??
下面是一个例子。
>>> f={'c':1,'d':2,'e':3}
>>> l=['c','d']
>>> {i:f[i] for i in f if any([k in i for k in l])}
{'c': 1, 'd': 2}
对于您的用例,它只是。
new_dict = {i:d2[i] for i in d2 if any([k in i for k in list])}
也就是说,请避免使用像list
这样的变量名。
此外,而不是
d2 = dict((y,x) for x,y in d.iteritems())
你可以做到
d2 = {y:x for x,y in d.iteritems()}
只需像 -
一样更新您的代码d2 = dict((y,x) for x,y in d.iteritems())
new_dict={}
for name in list:
for keyx in d2:
if name in keyx:
new_dict[keyx] = d2[keyx]
print new_dict
你做错的是在循环中一次又一次地制作字典...
当你写这篇文章时 -
new_dict[keyx] = dict('key' = 'something')
新词典已创建,这就是您遇到问题的原因... 您可以像其他答案一样以更多 pythonic 方式解决它...
您需要使用找到的新项目更新 new_dict
,而不是每次都重新创建一个新词典。这是一个例子:
d2 = {'a': 1, 'b': 2, 'ab': 3}
l = ['a']
new_dict = dict([(k, v) for k, v in d2.items() if any(x in k for x in l)])
print new_dict
这将输出:
{'a': 1, 'ab': 3}