我想从我的 dic 列表中删除一个字典键



我有一本字典叫total_list。我想在 len(value(==1 中找到total_list中的键、值对,然后将其添加到名为new_dict的新字典中,然后从total_list中删除该特定键、值对。但是,当我从total_list中删除时,由于某种原因,我的new_dict也变得空了,我不确定为什么。

total_list = {104370544: [31203.7, 1234], 106813775: [187500.0], 106842625: [60349.8]}
new_dict = {}
for k,v in list(total_list.items()):
if len(v) == 1:
new_dict[k] = v
total_list.pop(k)

我做了一些谷歌搜索,但没有找到任何解决方案。

new_dict[k] = v

将引用作为值插入,但不插入值。因此,如果删除.pop键:值对,则插入的引用指向无。

new_dict[k] = v[:]

现在,您获得从开始到结束位置的值,而不是引用。

首先,变量名称有点误导。第一本词典根本没有列出(标题也具有误导性(。尝试选择简短且具有描述性的变量名称。

其次,当你打电话给dict.pop时,你应该使用(),但我认为当你提出这个问题时,这是一个错字。

最后,由于pop返回值,因此您可以将其存储在new_dict中的一行中。

total_list = {104370544: [31203.7, 1234], 106813775: [187500.0], 106842625: [60349.8]}
new_dict = {}
for k,v in list(total_list.items()):
if len(v) == 1:
new_dict[k] = total_list.pop(k)
print(total_list)
print(new_dict)

或上述一行

new_dict = {k: total_list.pop(k) for k,v in list(total_list.items()) if len(v) == 1} 

输出:

{104370544: [31203.7, 1234]}
{106813775: [187500.0], 106842625: [60349.8]}

最新更新