我正在尝试将列表中的值输入到一个空字典中,但是我不断收到错误消息,而且我不知道自己做错了什么。
我的列表lst
如下:
[[123,456],
[123,123],
[123,567],
[234,344],
[234,345],
[234,988]...]
我被要求首先创建一个空字典,其中包含lst
中的第一个数字(看起来像123:[],234:[]
),然后在列表中的第一个数字之后输入第二个数字。字典,字典应该看起来像{123:[456,567],234:[344,345,988]...}
(如果第一个数字等于第二个数字,则不应包括第二个数字)
我创建了一个空字典,然后使用以下代码打印数字的字典值:
dic = dict((i, []) for i in lst)
for key, value in dic.items():
if key in lst:
print(key, ":", value)
当我尝试使用以下代码将lst
中的值放入字典中时:
for w in lst:
if w[0] in dic.keys() and w[0] != w[1]:
dic[w[0]].append(w[1])
lst2 = []
for a in lst[0:10]:
lst2.append(dic[a])
print(lst2)
我在下面收到一条错误消息:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-135-610d94e48548> in <module>
8
9 for w in idList:
---> 10 if w[0] in dic.keys() and w[0] != w[1]:
11 dic[w[0]].append(w[1])
12
TypeError: 'int' object is not subscriptable
有人知道那里发生了什么吗,我该如何解决?
非常感谢!
答案 0 :(得分:0)
最接近您的解决方案:
dic = {i[0]: [] for i in lst}
for w in lst:
if w[0] != w[1]
dic[w[0]].append(w[1])
注意。要更第一步,您可以使用defaultdict和groupby作为第二个How do I use Python's itertools.groupby()?
答案 1 :(得分:0)
l = [[123,456],
[123,123],
[123,567],
[234,344],
[234,345],
[234,988]]
dic = {} #empty dictionary
# creating dictionary with inner list first element as key and value as list
for i in l:
dic.update({i[0]:[]})
# adding the second value to the corresponding key in list
for i in l:
dic[i[0]].append(i[1])
print(dic)
输出
{123: [456, 123, 567], 234: [344, 345, 988]}
答案 2 :(得分:0)
lst = [[123,456],[123,123],[123,567],[234,344],[234,345],[234,988]]
dic = dict((i[0], []) for i in lst)
for i in lst:
if i[0] != i[1]:
dic[i[0]].append(i[1])