2011-02-02 10 views
0

私は(例えば)辞書に一連のリストを持っている場合:リスト内の文字列の場所を探す - Pythonの

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

と私はので、私はその後、同じ位置を得ることができ、文字列の位置を検索します他のリストから。

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

あなたは、これはこれを実装するための最良の方法であることを確認していますか?これらのリストが同じ順序であることはどうですか?また、トーマスはどのようにポジション2に入っていますか?それははっきりしない。 – Falmarri

+0

私はトーマスが位置2にある場合という意味します。コメントされた領域は、必要なコードがある場所です。 –

答えて

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

:これに似た他の例では、私はこのようなパターンを使用しました。いずれにせよ、このようにそれを格納するレコードが速くなりにアクセスするのに役立ちます。

5

は、最初の場所に適切な構造に保管してください。

D = dict(zip(dictionary['Name'], dictionary['Age'])) 
print D['Thomas'] 
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')]を使用したいです。

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) 
関連する問題