【发布时间】:2017-10-31 22:07:29
【问题描述】:
我有两个列表:
a = [0, 0, 0, 1, 1, 1, 1, 1, .... 99999]
b = [24, 53, 88, 32, 45, 24, 88, 53, ...... 1]
我想将这两个列表合并到一个字典中,例如:
{
0: [24, 53, 88],
1: [32, 45, 24, 88, 53],
......
99999: [1]
}
一个解决方案可能是使用for 循环,它看起来不太优雅,例如:
d = {}
unique_a = list(set(list_a))
for i in range(len(list_a)):
if list_a[i] in d.keys:
d[list_a[i]].append(list_b[i])
else:
d[list_a] = [list_b[i]]
虽然这确实有效,但效率低下,并且当列表非常大时会花费太多时间。我想知道构建这样一个字典的更优雅的方法吗?
提前致谢!
【问题讨论】:
-
嵌套的 for 循环如何?
-
DYM
if list_a[i] in d.keys和d[list_a[i]] = [list_b[i]]?请准确地发布您尝试过的代码,最好使用复制+粘贴(如果在您的平台上可用)。 -
如果提供的答案之一对您有用,请将其标记为已接受。它使将来遇到您的问题的人更容易知道什么有效。
-
@TobySpeight
if表示如果list_a[i]已经是字典中的键,则将list_b[i]添加到字典中的键list_a[i]下,而else表示如果不是,则添加list_b[i] to the new keylist_a[i]` 作为列表。希望对您有所帮助。 -
@BigD,我认为这就是您要写的内容(正如我所建议的那样)。
list_[a] in d.keys没有意义,d[list_a] =也没有。我建议你 edit 修复这些错误。
标签: python list dictionary