当前位置: 首页 > 面试题库 >

如何在不使用嵌套for循环的情况下将两个列表合并到字典中

郝承悦
2023-03-14
问题内容

我有两个清单:

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]]

尽管此方法确实有效,但效率很低,并且当列表很大时会花费太多时间。我想知道构造这种字典的更优雅的方法吗?

提前致谢!


问题答案:

您可以使用defaultdict:

from collections import defaultdict
d = defaultdict(list)
list_a = [0, 0, 0, 1, 1, 1, 1, 1, 9999]
list_b = [24, 53, 88, 32, 45, 24, 88, 53, 1]
for a, b in zip(list_a, list_b):
   d[a].append(b)

print(dict(d))

输出:

{0: [24, 53, 88], 1: [32, 45, 24, 88, 53], 9999: [1]}


 类似资料:
  • 我想在Python2.7中并行化两个嵌套的for循环,但我自己没有成功。我不知道如何接近什么是并行化的定义。 总之,这里是单处理器代码:

  • rbindlist做的正是我需要的,但'do.call'做不到! do.Call不是我想要的

  • 问题内容: 我该如何列出这样的词典列表。 …变成这样的单个字典: 问题答案: 这适用于任何长度的字典: 作为一个理解:

  • 本文向大家介绍python字典嵌套字典的情况下找到某个key的value详解,包括了python字典嵌套字典的情况下找到某个key的value详解的使用技巧和注意事项,需要的朋友参考一下 最近在用python写接口的测试程序,期间用到解析字典获取某个key的value,由于多个接口返回的字典格式不是固定的并存在多层嵌套的情况。在字典的方法中也没有找到可直接达到目的的方法(也可能是我对字典的方法了解

  • 我有一个非常基本的函数,它搜索的数组列表,并返回与传递给它的参数匹配的帐户。但是,一旦抛出CustomerAccountNotFoundException,我的for循环就会中断。 我通过在异常后打印的值来测试这一点,该值一直被重置为0。如何在抛出异常后继续循环?我希望每次帐户不匹配时都抛出它,当它匹配时返回帐户。我还尝试过但不起作用。

  • 问题内容: 我有两个长度相同的清单: 和 我想在我有的地方创建字典 最好的方法是什么? 问题答案: dict(zip([1,2,3,4], [a,b,c,d])) 如果列表很大,则应使用。 如果键的数量多于值,并且您想为额外的键填写值,则可以使用。 这里,,,和是变量-它会正常工作(只要它们被定义),但你可能是指,如果你希望他们为字符串。 从每个可迭代对象中获取第一个项目,并生成一个元组,然后从每