私は、各リストの最初の値がキーである4値辞書に変換したいリストのリストを持っています。したがって、たとえばリストは次のようになります。リストを多値辞書に変換する方法
[['267-10-7633', '66', '85', '74', 0], ['709-40-8165', '71', '96', '34', 0]]
と私はそれになりたい
{"267-10-7633":[66,85,74,0], "709-40-8165", [71,96,34,0] }
私は、各リストの最初の値がキーである4値辞書に変換したいリストのリストを持っています。したがって、たとえばリストは次のようになります。リストを多値辞書に変換する方法
[['267-10-7633', '66', '85', '74', 0], ['709-40-8165', '71', '96', '34', 0]]
と私はそれになりたい
{"267-10-7633":[66,85,74,0], "709-40-8165", [71,96,34,0] }
あなたは辞書内包表記を使用することができます:あなたはpython2上にある場合
lst = [['267-10-7633', '66', '85', '74', 0], ['709-40-8165', '71', '96', '34', 0]]
{k: v for k, *v in lst}
# {'267-10-7633': ['66', '85', '74', 0], '709-40-8165': ['71', '96', '34', 0]}
を複数の要素を解凍するのに*v
を使用できないようです:
{x[0]: x[1:] for x in lst}
# {'267-10-7633': ['66', '85', '74', 0], '709-40-8165': ['71', '96', '34', 0]}
ここで型変換は行いませんでした。私はあなたがそれを行う方法について他の答えを参照することができると思います。
シンプルでまっすぐ進むソリューション。
lst = [['267-10-7633', '66', '85', '74', 0], ['709-40-8165', '71', '96', '34', 0]]
# create an empty dict
new_dict = {}
# iterate through the list
for item in lst:
# key is first element in the inner list
# value is second element in the inner list
key = item[0]
value = item[1:]
new_dict[key] = value
print new_dict
リスト内包
{element[0]: [int(x) for x in element[1:]] for element in\
[['267-10-7633', '66', '85', '74', 0], ['709-40-8165', '71', '96', '34', 0]]}
この場合には、単純なアプローチに適している:list
とdict
理解して
your_list = [['267-10-7633', '66', '85', '74', 0], ['709-40-8165', '71', '96', '34', 0]]
dictionary = {}
for item in your_list:
dictionary[item[0]] = [int(i) for i in item[1:]]
print(dictionary)
:
いずれの場合も0、出力:
{'267-10-7633': [66, 85, 74, 0], '709-40-8165': [71, 96, 34, 0]}
ll = [['267-10-7633', '66', '85', '74', 0], ['709-40-8165', '71', '96', '34', 0]]
mydict = {}
for item in ll:
key,*values = item
mydict[key] = values
print(mydict)
質問によると、私はあなたのリストに整数に文字列を変換するべきだと思います。 Py2 ver: '{x [0]:map(int、x [1:])for x in first}'。 – JRodDynamite
@JRodDynamiteこれは、 'list(map(int、x [1:]))'が必要なPy2とPy3の別の問題を開くでしょう。 – schwobaseggl
@JRodDynamiteあなたのコメントは、python 3の場合、答えの良い補足と思います: '{k:list(map、int、v)for k、* v in lst}' – Psidom