Найти расположение строки в списке - Python - PullRequest
0 голосов
/ 02 февраля 2011

Если у меня есть серия списков в словаре (например):

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

и я хочу найти позицию строк, чтобы затем получить ту же позицию из другого списка.

Так, например,

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

Ответы [ 4 ]

5 голосов
/ 02 февраля 2011

Прежде всего, храните его в правильной структуре.

D = dict(zip(dictionary['Name'], dictionary['Age']))
print D['Thomas']
2 голосов
/ 02 февраля 2011
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, если вам нужно, чтобы записи были различной длины.В любом случае, его хранение поможет быстрее получить доступ к записям.

0 голосов
/ 02 февраля 2011
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)
0 голосов
/ 02 февраля 2011

Вы хотите использовать .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')] плотнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...