将元组列表转换为字典
我想找到一种方法,把这样的元组列表:
[(1,4),(2,4),(3,4),(4,15),(5,15),(6,23),(7,23),(8,23),(9,15),(10,23),(11,15),(12,15)]
转换成这样的字典:
{4:[1,2,3] ,15:[4,5,9,11,12], 23:[6,7,8,10]}
每个元组的第二个元素会变成字典的键,而与这个键相关的所有第一个元素会被放在一个值的列表里。
你能告诉我怎么做到这一点吗?
7 个回答
2
这段代码是用来做某些操作的,但具体的功能需要根据上下文来理解。代码块通常包含了一些编程指令,这些指令告诉计算机该怎么做。对于初学者来说,理解这些指令的意思是很重要的。
如果你看到一个代码块,比如
tuples = [(1,4),(2,4),(3,4),(4,15),(5,15),(6,23),(7,23),(8,23),(9,15),(10,23),(11,15),(12,15)]
dicts = {}
for elem in tuples:
try:
dicts[elem[1]].append(elem[0])
except KeyError:
dicts[elem[1]] = [elem[0],]
,它可能是一个函数、一个变量的定义,或者是其他编程元素。每个代码块都有其特定的作用,学习它们的用法可以帮助你更好地掌握编程。
总之,代码块是编程中的基本组成部分,理解它们是学习编程的第一步。
14
在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这个时候,我们可以去一些技术论坛,比如StackOverflow,去寻找解决方案或者向其他人请教。
在这些论坛上,很多人会分享他们遇到的问题和解决办法。你可以看到其他程序员是如何解决类似的问题,或者他们是如何理解某些技术概念的。这对于刚开始学习编程的人来说,特别有帮助。
总之,利用这些资源可以让你更快地掌握编程知识,解决问题的能力也会提高。
>>> a = [(1,4),(2,4),(3,4),(4,15),(5,15),(6,23),(7,23),(8,23),(9,15),(10,23),(11,15),(12,15)]
>>> b = {}
>>> for i, j in a:
... b.setdefault(j, []).append(i)
...
>>> b
{23: [6, 7, 8, 10], 4: [1, 2, 3], 15: [4, 5, 9, 11, 12]}
>>>
50
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在程序中使用它。这个过程可能会涉及到很多步骤,比如读取文件、处理数据、然后再把结果输出到屏幕上。
有些时候,我们可能会遇到一些错误,比如程序运行不起来,或者结果和我们预期的不一样。这时候,我们就需要仔细检查我们的代码,看看是不是哪里写错了,或者有没有漏掉什么重要的步骤。
在解决这些问题时,很多人会选择在网上寻找帮助,比如在StackOverflow这样的论坛上提问。这里有很多经验丰富的程序员,他们会分享自己的经验和解决方案,帮助你更好地理解问题所在。
总之,编程就像是解谜游戏,有时候需要耐心和细心,才能找到正确的答案。
>>> from collections import defaultdict
>>> l= [(1,4),(2,4),(3,4),(4,15),(5,15),(6,23),(7,23),(8,23),(9,15),(10,23),(11,15),(12,15)]
>>> d= defaultdict( list )
>>> for v, k in l:
... d[k].append(v)
...
>>> d
defaultdict(<type 'list'>, {23: [6, 7, 8, 10], 4: [1, 2, 3], 15: [4, 5, 9, 11, 12]})
>>> [ {k:d[k]} for k in sorted(d) ]
[{4: [1, 2, 3]}, {15: [4, 5, 9, 11, 12]}, {23: [6, 7, 8, 10]}]