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()}