找出列表中是否没有项是字典中的键

2024-10-01 09:29:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个清单:

source = ['sourceid', 'SubSourcePontiflex', 'acq_source', 'OptInSource', 'source',
      'SourceID', 'Sub-Source', 'SubSource', 'LeadSource_295', 'Source',
      'SourceCode', 'source_code', 'SourceSubID']

我在python中迭代XML,为每个子节点创建一个字典。字典的长度和键随每次迭代而变化。有时字典会包含一个键,它也是这个列表中的一个项。有时候不会。我想做的是,如果字典中的一个键也是这个列表中的一个项,那么将这个值附加到一个新列表中。如果字典中的键都不在列表源中,我想附加一个默认值。我真的不知道该怎么做。任何帮助都将不胜感激。在


Tags: source列表字典codesourcecodesubsourceidacq
3条回答

在Python3中,可以直接对dict.keys()返回的对象执行set操作:

in_source_and_dict = mydict.keys() & source
in_dict_not_source = mydict.keys() - source
in_source_not_dict = source - mydict.keys()

如果您将.keys()替换为.viewkeys(),那么这在python2.7中也可以工作。在

只需使用in关键字来检查字典中某个键的成员资格。在

下面的示例将打印[3, 1],因为3和1是字典中的键,也是列表的元素。在

someList = [8, 9, 7, 3, 1]
someDict = {1:2, 2:3, 3:4, 4:5, 5:6}
intersection = [i for i in someList if i in someDict]
print(intersection)

您可以在每次迭代时检查这个intersection列表是否为空。如果列表为空,那么您知道列表中没有项是字典中的键。在

in_source_and_dict = set(mydict.keys()).intersection(set(source))
in_dict_not_source = set(mydict.keys()) - set(source)
in_source_not_dict = set(source) - set(mydict.keys())

迭代您想要的结果。在本例中,我想您应该遍历in_source_not_dict以提供默认值。在

相关问题 更多 >