使用自生成的键将嵌套列表转换为字典
Converting nested lists to dictionary with self generated keys
我的列表如下所示:
my_list = [[sub_list_1],[sub_list_2],...,[sub_list_n]]
期望输出
my_dict[1] = [sub_list_1]
my_dict[2] = [sub_list_2]
my_dict[n] = [sub_list_n]
我希望字典的键自行生成。如何以 pythonic 方式实现?
我看某些问题比如
- Converting nested lists to dictionary
但他们要么提供键列表,要么专注于使用列表中的一些信息作为键。
或者,我尝试以这种方式列出键:
my_keys = list(range(len(my_list)))
my_dict = dict(zip(my_keys,my_list)
它有效但是,这不起作用:
my_dict = dict(zip(list(range(len(my_list))),my_list))
这给我一个语法错误。
总而言之:
- 有没有办法在不显式提供键的情况下生成列表字典?
- 为什么组合代码抛出语法错误而两步代码有效?
当 运行 您的代码:
时,我没有收到任何错误消息
>>> my_list = [["hello1"], ["hello2"]]
>>> my_dict = dict(zip(list(range(len(my_list))), my_list))
>>> my_dict
{1: ['hello1'], 2: ['hello2']}
您可以使用字典理解从列表列表创建列表字典:
my_dict = {i: sub_list for i, sub_list in enumerate(my_list)}
我建议在这里使用字典理解来实现你想要的,而且我尝试了你的实现并且没有遇到任何问题(欢迎提供更多详细信息):
my_list = [["sub_list_1"],["sub_list_2"],["sub_list_3"]]
my_dict = dict(zip(list(range(len(my_list))),my_list))
alternative_dict = {iter:item for iter,item in enumerate(my_list)}
print("yours : " + str(my_dict))
print("mine : " + str(alternative_dict))
输出:
yours : {0: ['sub_list_1'], 1: ['sub_list_2'], 2: ['sub_list_3']}
mine : {0: ['sub_list_1'], 1: ['sub_list_2'], 2: ['sub_list_3']}
应该这样做
my_dict = {my_list.index(i) + 1: i for i in my_list}
请注意,我添加了 +1
以从键 1 而不是 0 开始,以满足您的期望
您的语法错误是由您的变量名try
引起的。 try
已经是 python 中的名称。见 try/except
我的列表如下所示:
my_list = [[sub_list_1],[sub_list_2],...,[sub_list_n]]
期望输出
my_dict[1] = [sub_list_1]
my_dict[2] = [sub_list_2]
my_dict[n] = [sub_list_n]
我希望字典的键自行生成。如何以 pythonic 方式实现?
我看某些问题比如
- Converting nested lists to dictionary
但他们要么提供键列表,要么专注于使用列表中的一些信息作为键。
或者,我尝试以这种方式列出键:
my_keys = list(range(len(my_list)))
my_dict = dict(zip(my_keys,my_list)
它有效但是,这不起作用:
my_dict = dict(zip(list(range(len(my_list))),my_list))
这给我一个语法错误。
总而言之:
- 有没有办法在不显式提供键的情况下生成列表字典?
- 为什么组合代码抛出语法错误而两步代码有效?
当 运行 您的代码:
时,我没有收到任何错误消息>>> my_list = [["hello1"], ["hello2"]]
>>> my_dict = dict(zip(list(range(len(my_list))), my_list))
>>> my_dict
{1: ['hello1'], 2: ['hello2']}
您可以使用字典理解从列表列表创建列表字典:
my_dict = {i: sub_list for i, sub_list in enumerate(my_list)}
我建议在这里使用字典理解来实现你想要的,而且我尝试了你的实现并且没有遇到任何问题(欢迎提供更多详细信息):
my_list = [["sub_list_1"],["sub_list_2"],["sub_list_3"]]
my_dict = dict(zip(list(range(len(my_list))),my_list))
alternative_dict = {iter:item for iter,item in enumerate(my_list)}
print("yours : " + str(my_dict))
print("mine : " + str(alternative_dict))
输出:
yours : {0: ['sub_list_1'], 1: ['sub_list_2'], 2: ['sub_list_3']}
mine : {0: ['sub_list_1'], 1: ['sub_list_2'], 2: ['sub_list_3']}
应该这样做
my_dict = {my_list.index(i) + 1: i for i in my_list}
请注意,我添加了 +1
以从键 1 而不是 0 开始,以满足您的期望
您的语法错误是由您的变量名try
引起的。 try
已经是 python 中的名称。见 try/except