文字列を辞書の場所に変換する方法があるかどうかを調べようとしています。私は、サンプルコードが私がしようとしていることを説明するのが最も簡単だと思います。Pythonの文字列を辞書の場所に変換する
def main(locate_user_id):
response = {
"users": [{
"id": 1,
"name": "Joe"
}, {
"id": 2,
"name": "Bob"
}]
}
print(response)
print (locate_user_id)
print (response[locate_user_id])
if __name__ == "__main__":
main("users[1]['id']")
これの出力は、現在、次のとおりです。
{'users': [{'id': 1, 'name': 'Joe'}, {'id': 2, 'name': 'Bob'}]}
users[1]['id']
Traceback (most recent call last):
File "test_dict.py", line 17, in <module>
main("users[1]['id']")
File "test_dict.py", line 14, in main
print (response[locate_user_id])
KeyError: "users[1]['id']"
そして私は、出力の代わりに、このするソリューションを探しています:
{'users': [{'id': 1, 'name': 'Joe'}, {'id': 2, 'name': 'Bob'}]}
users[1]['id']
2 // the id of the user referenced above
コードを再設計することを検討する必要があります。これは悪いデザインです。 –
ここには本当に残酷な答えがいくつかあります。 'eval'を使わず、intを渡してデータにアクセスできるようにコードを再設計してください。 – skrx