我正在尝试仅使用列表中的特定值创建字典。到目前为止,这是我的代码:
my_dict = {1: [1], 2: [1, 2], 3: [1, 3], 4: [1, 3, 4], 5: [1, 3, 4, 5], 6: [1, 3, 4, 5, 6]}
my_list = ([1, 1, 0], [1, 2, 100], [1, 3, 150], [1, 4, 150], [1, 5, 10], [1, 6, 20])
new_list = []
o_d = 0
# making the AON list
new_dict = {}
for i in my_list:
if i[0] and i[1] in my_dict:
new_list.append(my_list[o_d][1])
new_list.append(my_list[o_d][2])
for key in my_dict:
new_dict[key] = my_list[o_d][2]
o_d += 1
else:
o_d += 1
print(o_d)
print(new_list)
print(new_dict)
我得到的输出是:
6
new_list [1, 0, 2, 100, 3, 150, 4, 150, 5, 10, 6, 20]
new_dict {1: 20, 2: 20, 3: 20, 4: 20, 5: 20, 6: 20}
问题是,在o_d遍历整个列表之后,我只在my_list中添加第6项的第三个值。如何添加每个o_d迭代的第三个值?
这是我预期的输出:
{1: 0, 2: 100, 3: 150, 4: 150, 5: 10, 6: 20}
答案 0 :(得分:0)
这是因为你在outter for循环的每次迭代中都重写了new_dict的所有元素。您需要摆脱内部for循环并仅重写正确的new_dict值或使用.append(my_list [o_d] [2]),而不是取决于您尝试输出的内容。
另外,你知道"如果my_dict中的i [0]和i [1]:"检查i [0]是否不是空对象(例如0,[],{}等)和my_dict中的i [1],而不是i [0]和i [1]都在my_dict中?你可以移动" o_d + = 1"只要你在if和else中运行它,就会从if-else语句中分离出来。
答案 1 :(得分:0)
我解决了!
以下是代码:
my_dict = {1: [1], 2: [1, 2], 3: [1, 3], 4: [1, 3, 4], 5: [1, 3, 4, 5], 6: [1, 3, 4, 5, 6]}
my_list = ([1, 1, 0], [1, 2, 100], [1, 3, 150], [1, 4, 150], [1, 5, 10], [1, 6, 20])
new_list = []
o_d = 0
# making the AON list
new_dict = {}
for i in my_list:
new_dict[o_d + 1] = my_list[o_d][2]
if i[0] and i[1] in my_dict:
new_list.append(my_list[o_d][1])
new_list.append(my_list[o_d][2])
o_d += 1
print(o_d)
print ("new_list", new_list)
print("new_dict", new_dict)
这是输出:
6
new_list [1, 0, 2, 100, 3, 150, 4, 150, 5, 10, 6, 20]
new_dict {1: 0, 2: 100, 3: 150, 4: 150, 5: 10, 6: 20}