在python中将OrderedDict转换为set

2024-09-29 03:22:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的命令:

OrderedDict([
    (1666, [
        ['2ZNV', 'EDO1', 14, '2FCN', 'CD', 119],
        ['2ZNV', 'EDO', 14, '2FCN', 'CD', 119]]), 
    (1056, [['2ZNV', 'EDO', 32, '2FCN','CD', 33]]), 
    (266, [['2ZNV', 'EDO', 14, '2FCN', 'CD', 19]]), 
    (171, [
        ['2ZNV', 'ZN', 9, '2FCN', 'DVA', 19], 
        ['2ZNV', 'ZN', 9, '2FCN', 'CD', 19], 
        ['2ZNV', 'ZN', 9, '2FCN', 'ACT', 19], 
        ['2ZNV', 'EDO', 9, '2FCN', 'CD', 19], 
        ['2ZNV', 'EDO', 9, '2FCN', 'DVA', 19]]),
    (45, [
        ['2ZNV','EDO', 9, '2X8L', 'GOL', 5], 
        ['2ZNV', 'ZN', 9, '2X8L', 'GOL', 5]]),
    (6, [['2ZNV', 'EDO', 2, '2FCN', 'CD', 3]]), 
    (1, [['2ZNV', 'EDO', 1, '2FCN', 'CD', 1]])
])

是否可以添加set中的所有值,但保持顺序?在

我试图转换成list,然后从tuple转换成set,如下所示:

^{pr2}$

但这不是维持秩序。上述结果为:

set([
    ('2ZNV', 'ZN', 9, '2FCN', 'DVA', 19),
    ('2ZNV', 'EDO', 14, '2FCN', 'CD', 119),
    ('2ZNV', 'EDO', 9, '2X8L', 'GOL', 5),
    ('2ZNV', 'EDO', 32, '2FCN', 'CD', 33),
    ('2ZNV', 'EDO', 9, '2FCN', 'DVA', 19),
    ('2ZNV', 'ZN', 9, '2FCN', 'ACT', 19),
    ('2ZNV', 'EDO', 9, '2FCN', 'CD', 19),
    ('2ZNV', 'EDO', 1, '2FCN', 'CD', 1),
    ('2ZNV', 'EDO', 14, '2FCN', 'CD', 19),
    ('2ZNV', 'ZN', 9, '2X8L', 'GOL', 5),
    ('2ZNV', 'EDO1', 14, '2FCN', 'CD', 119),
    ('2ZNV', 'EDO', 2, '2FCN', 'CD', 3),
    ('2ZNV', 'ZN', 9,'2FCN', 'CD', 19)
])

提前谢谢你。在


Tags: 命令顺序cdactlistordereddictsettuple
2条回答

集合是无序的,但可以创建唯一元组的列表:

listset = []
for k, v in od.items():
    if (k, v) not in listset:
        listset.append((k, v))

您可以使用此配方中的OrderedSet https://code.activestate.com/recipes/576694/。只是

OrderedSet([tuple(item) for sublist in od.values() for item in sublist])

相关问题 更多 >