在列表中查找字符串位置 - Python

时间:2011-02-02 01:08:52

标签: python list dictionary

如果我在字典中有一系列列表(例如):

{'Name': ['Thomas', 'Steven', 'Pauly D'], 'Age': [30, 50, 29]}

我希望找到字符串位置,以便我可以从其他列表中获得相同的位置。

所以,例如。

if x = 'Thomas' #is in position 2:
    y = dictionary['Age'][2]

4 个答案:

答案 0 :(得分:5)

首先将其存放在适当的结构中。

D = dict(zip(dictionary['Name'], dictionary['Age']))
print D['Thomas']

答案 1 :(得分:2)

i = dictionary['Name'].index('Thomas')
y = dictionary['Age'][i]

但是,index执行线性搜索,对于大型列表可能会很慢。在其他类似的情况下,我使用了这样的模式:

Person = collections.namedtuple('Person', ['Name', 'Age'])
dictionary = {'Thomas': Person('Thomas', 30), 'Steven': Person('Steven', 50), 'Pauly D': Person('Pauly D', 29)}

如果你需要不同长度的记录,你可以用dict做同样的事情。无论哪种方式,像这样存储它将有助于更快地访问记录。

答案 2 :(得分:0)

您想使用.index()

d = {'Name': ['Thomas', 'Steven', 'Pauly D'], 'Age': [30, 50, 29]}
position = d['Name'].index('Steven')
age = d['Age'][position]

age = d['Age'][d['Name'].index('Steven')]更密集。

答案 3 :(得分:0)

infoDict = {
    'Name': ['Thomas', 'Steven', 'Pauly D'],
   'Age':   [30, 50, 29]
}

def getAge(name, d):
    offs = d['Name'].index(name)
    return d['Age'][offs]

getAge('Thomas', infoDict)