Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于另一个列表更新字典中的列表_Python_List_Dictionary - Fatal编程技术网

Python 基于另一个列表更新字典中的列表

Python 基于另一个列表更新字典中的列表,python,list,dictionary,Python,List,Dictionary,给定一个以列表为值的字典和一个单独的列表: myDict = {0: [0, 1, 2], 1: [], 2: [20, 25, 26, 28, 31, 34], 3: [], 4: [0, 1, 2, 3, 4, 7, 10], 5: [], 6: [10, 20, 24]} myList = [1, 34, 10] 如果myDict中的值与myList中的值匹配,如何从列表中删除这些值 因此,对于示例词典,我希望最终会有这样一本词典: myDict = {0: [0, 2], 1: []

给定一个以列表为值的字典和一个单独的列表:

myDict = {0: [0, 1, 2], 1: [], 2: [20, 25, 26, 28, 31, 34], 3: [], 4: [0, 1, 2, 3, 4, 7, 10], 5: [], 6: [10, 20, 24]}

myList = [1, 34, 10]
如果myDict中的值与myList中的值匹配,如何从列表中删除这些值

因此,对于示例词典,我希望最终会有这样一本词典:

myDict = {0: [0, 2], 1: [], 2: [20, 25, 26, 28, 31], 3: [], 4: [0, 2, 3, 4, 7], 5: [], 6: [20, 24]}
这项工作:

>>> myDict = {0: [0, 1, 2], 1: [], 2: [20, 25, 26, 28, 31, 34], 3: [], 4: [0, 1, 2, 3, 4, 7, 10], 5: [], 6: [10, 20, 24]}
>>> myList = [1, 34, 10]
>>> {x:[z for z in y if z not in myList] for x,y in myDict.items()}
{0: [0, 2], 1: [], 2: [20, 25, 26, 28, 31], 3: [], 4: [0, 2, 3, 4, 7], 5: [], 6: [20, 24]}
>>>
这项工作:

>>> myDict = {0: [0, 1, 2], 1: [], 2: [20, 25, 26, 28, 31, 34], 3: [], 4: [0, 1, 2, 3, 4, 7, 10], 5: [], 6: [10, 20, 24]}
>>> myList = [1, 34, 10]
>>> {x:[z for z in y if z not in myList] for x,y in myDict.items()}
{0: [0, 2], 1: [], 2: [20, 25, 26, 28, 31], 3: [], 4: [0, 2, 3, 4, 7], 5: [], 6: [20, 24]}
>>>

myList
设置为一组,并使用dict和list理解组合:

mySet = set(myList)

myDict = {k: [i for i in v if i not in mySet] for k, v in myDict.items()}

使用集合可以提高效率,因为集合中的
成员资格测试比列表快得多。

myList
设置为集合,并使用dict和列表理解组合:

mySet = set(myList)

myDict = {k: [i for i in v if i not in mySet] for k, v in myDict.items()}
使用集合可以提高效率,因为集合的成员资格测试要比列表快得多。

这个答案同样有效:

updatedDict = {k:list(set(v) - set(myList)) for k, v in myDict.items()}
这个答案也适用于:

updatedDict = {k:list(set(v) - set(myList)) for k, v in myDict.items()}