创建两个字典,每个文件一个。例如:
file1 = {}
for line in open('file1', 'r'):
k, v = line.strip().split(':')
file1[k] = v
或者,如果您更喜欢单线:
file1 = dict(l.strip().split(':') for l in open('file1', 'r'))
然后你可以做类似的事情:
result = {}
for key, value in file1.iteritems():
if value in file2:
result[key] = file2[value]
另一种方法是您可以为 file1 反向生成键值对并使用集合。例如,如果您的 file1 包含foo:bar
,则您的 file1 dict 是{bar: foo}
.
for key in set(file1) & set(file2):
result[file1[key]] = file2[key]
基本上,您可以使用集合交集快速找到共同元素,因此这些元素保证在 file2 中,您不会浪费时间检查它们的存在。
编辑:正如@pepr 所指出的,collections.OrderedDict
如果订单对您很重要,您可以使用第一种方法。