dict列表清单

时间:2017-09-29 06:41:54

标签: python python-3.x list dictionary

我有这个列表清单:

dictlist= [['AUGUSTIN', 56725, 'Mar 2016', 0, 600], ['AUGUSTIN', 56725, 'Feb 2015', 600, 600], ['BOT', 52634, 'Aug 2014, Sept 2014, Oct 2014', 291, 291]]

我希望有一个函数在索引1后对它们进行分组,我想要的输出应该是这样的:

{56725: ['AUGUSTIN', 'Feb 2015', 600, 600], 52634: ['BOT', 'Aug 2014, Sept 2014, Oct 2014', 291, 291]}

但我尝试使用此功能:

def to_dict(lst): return {x[0]: x[1:] for x in lst}

但我的输出是这样的:

{'AUGUSTIN': [56725, 'Feb 2015', 600, 600], 'BOT': [52634, 'Aug 2014, Sept 2014, Oct 2014', 291, 291]}

我如何修复它以便获得所需的输出?我使用python 3。

3 个答案:

答案 0 :(得分:2)

使用dict理解,pop(1)提取索引1项作为键,其余作为字典项的值

def to_dict(lst): 
    return {x[:].pop(1): x for x in lst}

这将返回您的欲望输出字典,但是顺序不会跟随输入列表,因为普通字典不会按顺序排列, 另外,有2个列表项目,索引1 56725,后面的项目将覆盖前一个相同的键,因此输出只会保留后面的

答案 1 :(得分:0)

我没有看到任何问题:

dictlist= [['AUGUSTIN', 56725, 'Mar 2016', 0, 600], ['AUGUSTIN', 56725, 'Feb 2015', 600, 600], ['BOT', 52634, 'Aug 2014, Sept 2014, Oct 2014', 291, 291]]
def to_dict(lst): 
    return {x.pop(1):x for x in lst}

to_dict(dictlist)

答案 2 :(得分:-1)

重复列表并创建字典。

dictlist= [['AUGUSTIN', 56725, 'Mar 2016', 0, 600], ['AUGUSTIN', 56725, 'Feb 2015', 600, 600], ['BOT', 52634, 'Aug 2014, Sept 2014, Oct 2014', 291, 291]]

dicta = {x[1]: x[:1] + x[2:]  for x in [y for y in dictlist]}

# {56725: ['AUGUSTIN', 'Feb 2015', 600, 600], 52634: ['BOT', 'Aug 2014, Sept 2014, Oct 2014', 291, 291]}