繁体   English   中英

二维数组到字典的转换

[英]2D Array to Dictionary conversion

如何将输入转换为输出?

输入: mat=[[3, 37],[1, 41],[2, 37],[5, 41],[4, 35]]

输出: mat={37:[3,2],41:[1,5],35:[4]}

我试过下面的代码:

dic={}
x=[]
for i in mat:
    dic[i[1]]=list()
    dic[i[1]]=i[0]

得到这个答案: {37: 2, 41: 5, 35: 4}

你可以使用setdefault

d = {}
for a,b in mat:
    d.setdefault(b, []).append(a)

当需要默认值时,使用defaultdict是一种很好的做法。

from collections import defaultdict

m = defaultdict(list)
for val, key in mat:
    m[key].append(val)

尝试这个:

dic={}
for i in mat:
    if i[1] not in dic:
        dic[i[1]] = []
    dic[i[1]].append(i[0])

你快到了。 setdefault() / append()解决方案已经完美运行。 另一种方法是使用list +运算符连接两个列表并返回结果:

dic = {}
for i,j in mat:
    dic[j] = dic.get(j, []) + [i]

尝试这个:

dic={}
for i in mat:
    if dic.has_key(i[1]):
         dic[i[1]].append(i[0])
    else:
        dic[i[1]]=list()
        dic[i[1]].append(i[0])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM