繁体   English   中英

具有多个值到嵌套列表的字典

[英]Dictionary With Multiple Values To Nested List

我有一个具有以下结构的字典:

{'ONE' : (4, 6, 9), 'TWO' : (3, 8, 10)}

我想按每个元组的第3个值对字典进行排序。 我真的想不出一种方法来将数据设置为字典来完成此操作,但是如果我可以将数据转换为如下所示的嵌套列表,则应该相当简单:

[['ONE', 4, 6, 9], ['TWO', 3, 8, 10]]

我正在寻找最有效的代码来完成此任务。 如果有一种方法可以对这个词典进行排序而不进行转换,那将是理想的选择。 如果没有,将非常感谢从字典到嵌套列表的转换的任何帮助。 谢谢。

使用内置sorted函数的key参数:

>>> d = {'ONE' : (4, 6, 9), 'TWO' : (3, 8, 10), 'FOUR': (2, 5, 8)}
>>> sorted(d.iteritems(), key=lambda i: i[1][2])
[('FOUR', (2, 5, 8)), ('ONE', (4, 6, 9)), ('TWO', (3, 8, 10))]

编辑

如果某些值是整数而不是元组,则应执行以下操作:

>>> d = {'ONE' : (4, 6, 9), 'TWO' : (3, 8, 10), 'FOUR': (2, 5, 8), 'THREE': 0}
>>> sorted(d.iteritems(),
...        key=lambda i: i[1][2] if isinstance(i[1], tuple) else i[1])
[('THREE', 0), ('FOUR', (2, 5, 8)), ('ONE', (4, 6, 9)), ('TWO', (3, 8, 10))]

但是,从长远来看,最好将数据标准化以使所有值都具有相同的格式。

nestedlist = [[key] + list(value) for key,value in dictionary.items() if value != 0]

这是一种方式:

result = []
for key, value in dictionary.items():
    result.append([key] + list(value))

如果您的某些值是int类型而不是元组,请尝试以下方法:

result = []
for key, value in dictionary.items():
    try:
        lst = list(value)
    except TypeError:
        lst = [value]
    result.append([key] + lst)

暂无
暂无

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

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