我有一个默认形状:
defaultdict(<function __main__.construct_dicts.<locals>.<lambda>>,
{1: defaultdict(set, {'A': {0, 1}}),
2: defaultdict(set, {'A': {1, 3}, 'E': {12, 14}}),
3: defaultdict(set,
{'A': {3, 6},
'C': {4, 7, 10},
'D': {5, 8, 11},
'E': {9, 12}})})
如何将所有值放入三个列表中,例如:
^{pr2}$其中,对于一组奇数值,我重复旧对中的最后一个值作为新对中的新值,例如{5, 8, 11}
变成了{
编辑:刚刚意识到我读错了您的输出;答案更新了。在
事实上它是}是无序的(至少在大多数版本的Python中是这样),因此如果您想获得这个顺序,您必须对不同的dict和set进行排序,您可能需要使用}来获得键/值对并按键对它们进行排序。您可以在嵌套列表理解中这样做,然后解压到这三个变量,或者直接使用嵌套列表。要从内部列表中获取成对的连续元素,可以使用
defaultdict
并不重要,您可以使用。。。嗯,values()
。但是,请注意,dict
和{items()
而不是{zip(lst, lst[1:])
方法。在请注意,这将按项目的值(数字或字典顺序)对项目进行排序,而不是按它们的插入顺序。对于后者,可以使用
OrderedDict
(或python3.7+),然后不使用sorted
。在您可以使用
itertools.zip_longest
生成所需的值对,然后使用enumerate
为结果列表编制索引,以便您可以使用最后一个索引对中奇数编号的项填充集合中缺少的值:该输出:
^{pr2}$既然我回答了你的前一个问题,我想你想要什么可以通过以下列表理解来实现:
但是请注意,如果您希望结果具有特定的顺序,那么使用前面提到的方法是无法实现的,因为字典和集合不是按顺序排列的(除了Python-3.7,字典是按插入顺序排列的)。在
相关问题 更多 >
编程相关推荐