不确定为什么我无法解决这个问题。这是我的字典:
begin = {'kim': ['a', 'c', 'nope'], 'tom': ['b', 'd', 'e', 'nope', 'nope']}
我试图从字典值中的列表中删除特定元素。我要删除的值是' nope'。因此,我想要的输出是:
begin = {'kim': ['a', 'c'], 'tom': ['b', 'd', 'e']}
这是我尝试过的,它似乎没有工作
for i in begin:
for a in begin.get(i):
if a == 'nope':
del a
print begin
任何帮助将不胜感激。似乎很基本,但似乎无法得到它
答案 0 :(得分:3)
只需使用列表推导过滤掉列表中的nope
,就像这样
for key in begin:
begin[key] = [item for item in begin[key] if item != 'nope']
或者您可以完全重新创建begin
字典,并使用此字典理解
begin = {key:[item for item in begin[key] if item != 'nope'] for key in begin}
答案 1 :(得分:1)
for person in begin:
while "nope" in begin[person]:
begin[person].remove("nope")
答案 2 :(得分:1)
您真正想要的是从列表中删除值,该列表恰好位于字典中。您可以认为list.remove('nope')
可能有效,但它会从每个列表中删除一个'nope'。您可以使用理解或filter
函数来过滤掉nope
例如:
# python 2.x - comprehension
new_dictionary = dict(
(key, [v for v in value if v != 'nope'])
for key, value in begin.iteritems()
)
# python 2.x - filter
new_dictionary = dict(
(key, filter(lambda v: v != 'nope', value))
for key, value in begin.iteritems()
)
# python 3.x - comprehension
new_dictionary = {
key: [v for v in value if v != 'nope']
for key, value in begin.items()
}
# python 3.x - filter
new_dictionary = {
key: list(filter(lambda v: v != 'nope', value))
for key, value in begin.items()
}
答案 3 :(得分:0)
使用过滤器的一行词汇理解:
>>> {k: filter(lambda s: s!='nope', v) for k, v in begin.items()}
{'kim': ['a', 'c'], 'tom': ['b', 'd', 'e']}