【发布时间】:2019-08-22 18:56:48
【问题描述】:
我正在编写 Python 代码以删除列表字典中的某些元素。
dict ={'s': ['a','b'],'d': ['c','d'],'g': ['e','f']}
values = ['a','c','f']
list2 ={i:j.remove(value) for i,j in dict.items() for k in j for value in values if value in k}
print(list2)
下面的代码正在工作,给出预期的结果。我面临理解问题(上述代码)
for i,j in dict.items():
for k in j:
for value in values:
if value in k:
j.remove(value)
我不确定为什么理解不起作用。请帮助我解决这个问题的有效方法
实际结果:
{'s': None, 'd': None, 'g': None}
预期结果:
{'s': ['b'], 'd': ['d'], 'g': ['e']}
【问题讨论】:
-
j.remove返回None,它是一个就地函数,这就是为什么你的字典被None填充的原因 -
嵌套代码循环也不起作用,因为从您正在迭代的列表中删除元素会导致问题。
-
有有效的方法吗?
-
remove返回None。 .也永远不要使用dict来命名字典
标签: python list dictionary dictionary-comprehension