使用Python进行输入映射

时间:2019-06-29 14:35:27

标签: python python-2.7

对于给定的输入:

x = [('a',11),('a',12),('b',13),('b',14)]

如何编写地图函数以获取输出:

x_map = {'a':[11,12], 'b':[13,14]}

2 个答案:

答案 0 :(得分:0)

x = [('a',11),('a',12),('b',13),('b',14)]
d ={}
for i in x:
    if i[0] not in d:
        d[i[0]] = [i[1]]
    else:
        d[i[0]].append(i[1])
print d

输出:

{'a': [11, 12], 'b': [13, 14]}

我认为这就是您要寻找的

解决方案2:

x = [('a',11),('a',12),('b',13),('b',14)]
d={}
map(lambda a: d.setdefault(a[0], []).append(a[1]),x)
print d

输出:

{'a': [11, 12], 'b': [13, 14]}

答案 1 :(得分:0)

一种非常简单的方法是借助defaultdict

from collections import defaultdict

x = [('a',11),('a',12),('b',13),('b',14)]
x_map = defaultdict(list)

for k, v in x:
    x_map[k].append(v)

# {'a': [11, 12], 'b': [13, 14]}
print dict(x_map)