按ord查找字段

2024-04-20 00:36:52 发布

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

假设我有一个查找列表和一本词典:

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

因为这个键将构成搜索的核心-我需要确认它总是返回相同的字符串。
到目前为止,我的测试中还没有发现其他问题。
任何预警都是有用的。你知道吗


Tags: key字符串in核心列表forget词典
2条回答

如果我没弄错的话,这就是你需要的:

 '~'.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”这样的字符串。你知道吗

相关问题 更多 >