我有这个列表清单:
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。
答案 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]}