2024-04-20 00:36:52 发布
网友
假设我有一个查找列表和一本词典:
>>> 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)
因为这个键将构成搜索的核心-我需要确认它总是返回相同的字符串。 到目前为止,我的测试中还没有发现其他问题。 任何预警都是有用的。你知道吗
如果我没弄错的话,这就是你需要的:
'~'.join(str(di.get(key)) for key in l if di.get(key) is not None)
是的,这将产生总是以相同顺序出现的结果,除非您更改列表。集合和dict是无序的,即使它们看起来有一个你可以依赖的顺序,它们也没有。有一个确定的顺序,你不能指望它是你在python3.3中所期望的,例如,每次启动解释器时顺序都会改变,因为散列中添加了一个salt。你知道吗
但是,元组和列表有一个定义的顺序。除非更改列表或用不同的元组替换元组,否则所使用的键的顺序将始终相同。你知道吗
你写的相当于:
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)
..如果列表中的值不是dict中的键,它将失败并出现TypeError,因此您也不会得到像“3~~ 1”这样的字符串。你知道吗
如果我没弄错的话,这就是你需要的:
是的,这将产生总是以相同顺序出现的结果,除非您更改列表。集合和dict是无序的,即使它们看起来有一个你可以依赖的顺序,它们也没有。有一个确定的顺序,你不能指望它是你在python3.3中所期望的,例如,每次启动解释器时顺序都会改变,因为散列中添加了一个salt。你知道吗
但是,元组和列表有一个定义的顺序。除非更改列表或用不同的元组替换元组,否则所使用的键的顺序将始终相同。你知道吗
你写的相当于:
..如果列表中的值不是dict中的键,它将失败并出现TypeError,因此您也不会得到像“3~~ 1”这样的字符串。你知道吗
相关问题 更多 >
编程相关推荐