提问人:Kalev Maricq 提问时间:12/17/2019 最后编辑:Kalev Maricq 更新时间:12/17/2019 访问量:3133
Python 将单个字典项移动(弹出)到新字典中 [重复]
Python move (pop) single dictionary item into new dictionary [duplicate]
问:
我有一本字典,但不知道键或值。我想删除一个元素(不管是哪个元素)并创建一个仅包含该键和值的新字典,在此过程中将其从旧字典中删除。
dict(n 项) -> newdict(1 项) 和 dict(n-1 项)
我尝试过:
newdict=dict.pop()
- 对于列表来说可以完美地工作,但对于字典来说,它是 1。需要一个键,并且只返回一个值,而不是一个新字典或键、值对newdict={dict.items()[0]}
- TypeError:“dict_items”对象不可下标newdict={dict.keys()[0],dict.pop(dict.keys()[0])}
- TypeError:“dict_keys”对象不可下标key=list(dict)[0] newdict={key,dict.pop(key)}
- (终于)有效了,但它们不是比仅仅为了抓取一个键而将整个字典转换为列表更好的方法吗?
有没有更有效的方法可以将单个字典元素移动到新字典中?
编辑:将单个元素作为元组也可以。我只需要我删除的元素的键和值。
答:
0赞
Ramon Medeiros
12/17/2019
#1
您可以迭代
for key, value in dict.items():
if value == bla:
dict.pop(key)
1赞
manuhortet
12/17/2019
#2
尝试:
for key, value in old_dict:
new_dict[key] = old_dict.pop(key)
# operate with new_dict
评论
1赞
Izaak van Dongen
12/17/2019
嘿,你好!我想也许你对这些迹象有点过分热心(只有一个就可以了)=
:)
2赞
Kalev Maricq
12/17/2019
我的函数基本上是从任意数量的命名集创建维恩图。顺序无关紧要,集合应该有名称(键),所以字典似乎是显而易见的选择。该函数的操作方式是从字典中删除一个元素,计算 (n-1) 集合的维恩图组,并将新集合与每个集合相交。我是否遗漏了什么,或者这是从字典中弹出元素有用的情况?
0赞
manuhortet
12/17/2019
我认为你是对的,字典似乎是正确的选择。我试图回答“如何从字典中删除一个项目并使用该项目创建一个新项目”的理论问题。知道你在做什么,我认为你可以迭代字典项目。我会更新我的回答,向你展示我的意思。
3赞
Izaak van Dongen
12/17/2019
#3
我认为这是一个很好的用例:dict.popitem
old_dict = {1: 2, 3: 4, 5: 6}
new_dict = {7: 8}
def move_item(old, new):
k, v = old.popitem()
new[k] = v
move_item(old_dict, new_dict)
print(old_dict, new_dict)
有结果
{1: 2, 3: 4} {7: 8, 5: 6}
上一个:比较相邻列表项
评论
next(iter(old_dict))
old_dict
new_dict