删除字典值(如果它们存在于集合中)

塞亚塔·塞思

我有一套Python

A = {34, 4, 7, 39, 40, 13, 18, 20}

和一本字典

B = {4: [6, 34, 39], 7: [18, 34], 13: [6, 18, 34], 18: [7, 13], 
     20: [31, 47], 34: [4, 7, 13], 39: [4, 8], 40: [15, 43]}

我想创建一个新的字典C,以便如果B中的任何值在A中包含一个数字,则必须将它们从相应的值列表中删除。按键应不受影响。

例如,我正在寻找的理想输出是:

C = {4: [6], 7: [], 13: [6], 18: [], 20: [31, 47], 34: [], 39: [8]}

我尝试使用以下代码解决此问题:

C = {}
for key, value in B_mod.items():
    if value in A:
        C[key] = value
print("C is:", C)

我得到的输出如下:

C is: {7: 18, 18: 7, 34: 4, 39: 4}

显然,它不起作用。

*请注意,这B_mod意味着我正在使用以下代码在字典B的值中取消列出该列表:

B_mod = {k:v[0] for k,v in B.items()} # Unlisitng the values of dictionary B

我这样做是因为我无法遍历列表作为B中的值。*

有帮助获得C吗?

胡安帕·阿里维利亚加

您绝对可以遍历列表中的值B,的确确实需要,所以像这样:

>>> A = {34, 4, 7, 39, 40, 13, 18, 20}
>>> B = {4: [6, 34, 39], 7: [18, 34], 13: [6, 18, 34], 18: [7, 13], 20: [31, 47], 34: [4, 7, 13], 39: [4, 8], 40: [15, 43]}
>>> C = {}
>>> for key, value in B.items():
...     new_value = []
...     for val in value:
...         if val not in A:
...             new_value.append(val)
...     C[key] = new_value
...
>>> C
{4: [6], 7: [], 13: [6], 18: [], 20: [31, 47], 34: [], 39: [8], 40: [15, 43]}
>>>

您还可以将字典理解与列表理解一起使用:

>>> {k:[v for v in vs if v not in A] for k, vs in B.items()}
{4: [6], 7: [], 13: [6], 18: [], 20: [31, 47], 34: [], 39: [8], 40: [15, 43]}

这等效于for循环方法。对您更有意义的那个都可以。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果键,值对存在于字典中,则跳过python

来自分类Dev

如果键,值对存在于字典中,则跳过python

来自分类Dev

使用Powershell删除短语列表(如果它们存在于文本文件中)

来自分类Dev

如果特定单词存在于字符串中的单词之前,如何删除它们

来自分类Dev

仅包含数组值(如果它们存在于jq中)

来自分类Dev

检查数组值(如果存在于mongodb集合中)推入新数组

来自分类Dev

如果值已存在于Javascript集中,则如何删除

来自分类Dev

如果值存在于countif中,则删除单元格

来自分类Dev

Google脚本:如果其中的值存在于多个工作表中,则删除该行

来自分类Dev

如何从一个HashMap中删除,如果值存在于Java的8风格

来自分类Dev

Google脚本:如果其中的值存在于多个工作表中,则删除该行

来自分类Dev

如果一个较小的字典中的所有值都存在于较大的字典中,则返回true

来自分类Dev

删除过程(如果存在于DB Oracle中)

来自分类Dev

如果存在于 csv 文件的列中,则替换值

来自分类Dev

要求记录存在,如果它们存在于MySQL的另一个表中

来自分类Dev

如果类存在于任何元素中,则使用 jquery & 删除 html 并删除容器

来自分类Dev

PHP值存在于数组中

来自分类Dev

jQuery 值存在于数组中

来自分类Dev

如果熊猫数据帧列中的值存在于另一个数据帧中,则更新它们

来自分类Dev

Oracle文本:CONTAINS不返回任何值,即使它们存在于索引中

来自分类Dev

TypeError:检查列表中的值是否存在于字典中时出错

来自分类Dev

删除括号和括号中的内容(如果存在于df列中)

来自分类Dev

如果对象已经存在于数组中,则从数组中删除它(否则添加它)

来自分类Dev

如果日期时间值存在于日期时间值列表中,则进行条件格式设置

来自分类Dev

如果实体存在于数组中,则显示添加或删除按钮

来自分类Dev

删除单个.txt文件(如果存在于Visual Basic中)?

来自分类Dev

如果该行的字段存在于另一个文件中,则删除该行

来自分类Dev

删除临时表(如果存在于SQL Azure上)

来自分类Dev

如果值在给定列表中存在于多列中,并计算列数

Related 相关文章

  1. 1

    如果键,值对存在于字典中,则跳过python

  2. 2

    如果键,值对存在于字典中,则跳过python

  3. 3

    使用Powershell删除短语列表(如果它们存在于文本文件中)

  4. 4

    如果特定单词存在于字符串中的单词之前,如何删除它们

  5. 5

    仅包含数组值(如果它们存在于jq中)

  6. 6

    检查数组值(如果存在于mongodb集合中)推入新数组

  7. 7

    如果值已存在于Javascript集中,则如何删除

  8. 8

    如果值存在于countif中,则删除单元格

  9. 9

    Google脚本:如果其中的值存在于多个工作表中,则删除该行

  10. 10

    如何从一个HashMap中删除,如果值存在于Java的8风格

  11. 11

    Google脚本:如果其中的值存在于多个工作表中,则删除该行

  12. 12

    如果一个较小的字典中的所有值都存在于较大的字典中,则返回true

  13. 13

    删除过程(如果存在于DB Oracle中)

  14. 14

    如果存在于 csv 文件的列中,则替换值

  15. 15

    要求记录存在,如果它们存在于MySQL的另一个表中

  16. 16

    如果类存在于任何元素中,则使用 jquery & 删除 html 并删除容器

  17. 17

    PHP值存在于数组中

  18. 18

    jQuery 值存在于数组中

  19. 19

    如果熊猫数据帧列中的值存在于另一个数据帧中,则更新它们

  20. 20

    Oracle文本:CONTAINS不返回任何值,即使它们存在于索引中

  21. 21

    TypeError:检查列表中的值是否存在于字典中时出错

  22. 22

    删除括号和括号中的内容(如果存在于df列中)

  23. 23

    如果对象已经存在于数组中,则从数组中删除它(否则添加它)

  24. 24

    如果日期时间值存在于日期时间值列表中,则进行条件格式设置

  25. 25

    如果实体存在于数组中,则显示添加或删除按钮

  26. 26

    删除单个.txt文件(如果存在于Visual Basic中)?

  27. 27

    如果该行的字段存在于另一个文件中,则删除该行

  28. 28

    删除临时表(如果存在于SQL Azure上)

  29. 29

    如果值在给定列表中存在于多列中,并计算列数

热门标签

归档