python - 从另一个字典中提取带有值子集的字典

标签 python dictionary extract sublist

我有一个字典,想从它的值列表中删除 bad_list 中的某些值,并返回其余部分。这是代码:

d = {1: ['a', 'c', 'd'], 2: ['b'], 5: ['e']}

bad_list = ['d','e']

ad = {k:d[k].remove(i) for k in d.keys() for sublist in d[k] for i in sublist if i in bad_list}

print 'd =', d

print 'ad =', ad

不幸的是,它会永久更改 d 中的值,并为 ad 中的值返回 None

d =  {1: ['a', 'c'], 2: ['b'], 5: []}

ad =  {1: None, 5: None}

我怎样才能得到一个看起来像这样的字典:

new_dict = {1: ['a','c'], 2:['b']}

没有循环?我有一个更大的字典要处理,我想以最有效的方式处理。

最佳答案

没有循环就没有办法:

d = dict((key, [x for x in value if x not in bad_list]) for key, value in d.iteritems())

或使用过滤器:

d = dict((key, filter(lambda x: x not in bad_list, d[key])) for key in d)

更新

排除空值:

d = dict((key, list(x)) for key in d for x in [set(d[key]).difference(bad_list)] if x)

关于python - 从另一个字典中提取带有值子集的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34856771/

相关文章:

python - 十进制转二进制函数,Python

python - PyQt5鼠标悬停功能

audio - FFMPEG:如何从 m4v 中提取多声道轨道,将其混合并将立体声缩混保存为 "left"和 "right"?

mysql 5.7如何将json数组提取到多列?

python - 如何在另一个 tk 小部件中使用 matplotlib 之外的 matplotlib 的 mathtext 渲染?

python - influxdb python : 404 page not found

python - 填充python字典错误

c# - 字典是否可以将数组作为键?

python - 从具有可变长度的列表字典创建数据框

javascript - 有人可以帮我用正则表达式提取文本吗?