Python で URL パラメーターの文字列を辞書に変換する:parse_qsl と parse_qs の違い
URL のパラメーター文字列は parse_qsl でタプルのリストにできます。これを辞書型にキャストすれば辞書データが得られます。
from urllib.parse import parse_qsl
text = "name=佐藤&age=30&skill=Python&skill=SQL&active=true"
parsed = parse_qsl(text)
print(type(parsed))
# <class 'list'>
print(parsed)
# [('name', '佐藤'), ('age', '30'), ('skill', 'Python'), ('skill', 'SQL'), ('active', 'true')]
data = dict(parsed)
print(data)
# {'name': '佐藤', 'age': '30', 'skill': 'SQL', 'active': 'true'}
最後の dict でタプルの __('skill', 'Python')__ が消えていますね。これが parse_qsl の問題です。同じキーをもつ値をすべて漏れなく取得するには parse_qs を使います。先の関数 parse_qsl と似ていて、まぎらわしいです。
from urllib.parse import parse_qs
text = "name=佐藤&age=30&skill=Python&skill=SQL&active=true"
parsed = parse_qs(text)
print(type(parsed))
# <class 'dict'>
print(parsed)
# {'name': ['佐藤'], 'age': ['30'], 'skill': ['Python', 'SQL'], 'active': ['true']}
なんとこの関数、一発で辞書を返します。ただ、キーに対応する値はリストです。