假设我有一个查找列表和一本字典:
>>> l=['A','B','C']
>>> di={'A':3,'V':3,'M':7,'B':6,'D':2,'C':1}
我通过提取值并附加“~”来形成查找键
>>> '~'.join(str(di.get(key)) for key in l)
由于此键将构成搜索的核心 - 我需要确认它将始终返回相同的字符串。
到目前为止,我的测试没有显示任何其他情况。
任何预警都会有用。
最佳答案
是的,这将产生始终以相同顺序出现的结果,除非您更改列表。集合和字典是无序的,即使它们看起来有一个您可以依赖的顺序,但它们却没有。有一个明确的顺序,但你不能指望它是你所期望的——例如,在 Python 3.3 中,每次启动解释器时顺序都会改变,因为散列中添加了盐。
但是,元组和列表具有已定义的顺序。除非您更改列表或用不同的元组替换元组,否则您使用的键将始终采用相同的顺序。
您所写的内容相当于:
result = []
# l has a consistent order, so the result will be in the order of l
for key in l:
result.append(str(di.get(key)))
'~'.join(result)
..如果列表中的值不是字典中的键,它将失败并出现 TypeError,因此您也不会得到像“3~~1”这样的字符串。
关于python - 按顺序查找字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16869776/