我有一本字典叫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]}