【发布时间】:2017-07-12 05:28:59
【问题描述】:
我想为一串字母创建一个字典,其键是唯一字母,值是字母首次出现的索引。例如:word = 'mississippi',正确答案应该是{'m':0,'i':1,'s':2,'p':8}
我尝试编写“pythonic”代码:
dict = {word[i]:i for i in range(len(word)) if word[i] not in dict.keys()}
但是,我得到的是:{'i': 10, 'm': 0, 'p': 9, 's': 6}, 这就好像 dict 没有更新并且在调用 if 语句时仍然是空的。
正常的 for 循环做了正确的事:
for i in range(len(word)):
if word[i] not in first_apperance_dict.keys():
dict[word[i]]=i
输出:{'i': 1, 'm': 0, 'p': 8, 's': 2}
那么,这是为什么呢?这个问题有pythonic优雅的代码吗?一般来说,我应该只将“静态”变量放在列表/字典理解中的 if 语句中吗?
【问题讨论】:
标签: python dictionary if-statement syntax