Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 转换列表_Python_List - Fatal编程技术网

Python 转换列表

Python 转换列表,python,list,Python,List,我有一个这样的清单: [['0', '10'], ['0', '11'], ['0', '12'], ['1', '10'], ['1', '11']] 如何对列表中的元素进行分组,例如,如上所述 ['0': ['10','11','12']],['1': ['10','11']] 迭代-放入字典 d = {} l = [['0', '10'], ['0', '11'], ['0', '12'], ['1', '10'], ['1', '11']] for p in l: if p[

我有一个这样的清单:

[['0', '10'], ['0', '11'], ['0', '12'], ['1', '10'], ['1', '11']]
如何对列表中的元素进行分组,例如,如上所述

['0': ['10','11','12']],['1': ['10','11']]

迭代-放入字典

d = {}
l = [['0', '10'], ['0', '11'], ['0', '12'], ['1', '10'], ['1', '11']]
for p in l:
    if p[0] in d:
        d[p[0]].append(p[1])
    else:
        d[p[0]] = [p[1]]

>>> d
{'1': ['10', '11'], '0': ['10', '11', '12']}
使用:

一行:使用(有点浪费,但没有进口,需要2.7+)

您可以使用:


您可以使用
dict.setdefault()

对于您的列表,它也可以很好地工作:

In [39]: from operator import itemgetter

In [40]: from itertools import groupby

In [34]: lis=[['0', '10'], ['0', '11'], ['0', '12'], ['1', '10'], ['1', '11']]

In [35]: {k:[x[1] for x in g] for k,g in groupby(lis,key=itemgetter(0))}
Out[35]: {'0': ['10', '11', '12'], '1': ['10', '11']}

你是想把['1'、'11']作为列表中的最后一项吗?@FarukSahin panpa是的,我编辑了重要结果中键的顺序(
0
1
)?这一行将在python 2.6和2.7中工作:
dict(
key,[i[1]表示l中的i,如果i[0]==key])表示l中的(key,value)
,尽管
groupby()
基于此的解决方案在这里更好。
>>> dd = {key: [i[1] for i in l if i[0] == key] for (key, value) in l}
>>> dd
{'1': ['10', '11'], '0': ['10', '11', '12']}
import collections

l = [['0', '10'], ['0', '11'], ['0', '12'], ['1', '10'], ['1', '11']]

d = collections.defaultdict(list)
for k, v in l:
    d[k].append(v)
print(d)
In [16]: lis=[['0', '10'], ['0', '11'], ['0', '12'], ['1', '10'], ['1', '11']]

In [17]: dic={}

In [18]: for x,y in lis:
   ....:     dic.setdefault(x,[]).append(y)
   ....:     

In [19]: dic
Out[19]: {'0': ['10', '11', '12'], '1': ['10', '11']}
In [39]: from operator import itemgetter

In [40]: from itertools import groupby

In [34]: lis=[['0', '10'], ['0', '11'], ['0', '12'], ['1', '10'], ['1', '11']]

In [35]: {k:[x[1] for x in g] for k,g in groupby(lis,key=itemgetter(0))}
Out[35]: {'0': ['10', '11', '12'], '1': ['10', '11']}