列表到键值对的可能组合,将1个元素作为键,其余元素作为值



嗨,有人能帮我满足以下要求吗?请注意,列表长度可以是任何数字,例如我刚刚输入了4。

我需要以字典列表的形式输出,其中1个值作为关键字,其余值作为所有可能组合的列表。

提前谢谢。

输入:

List1 = [1,2,3,4]

输出:

List2 = [ {1:[2,3,4]},{2:[1,3,4]},{3:[1,2,4]} ,{4:[1,2,3]}

尝试:

List1 = [1, 2, 3, 4]
out = [
{v: [v for idx2, v in enumerate(List1) if idx != idx2]}
for idx, v in enumerate(List1)
]
print(out)

打印:

[{1: [2, 3, 4]}, {2: [1, 3, 4]}, {3: [1, 2, 4]}, {4: [1, 2, 3]}]

您可以通过列表理解来实现这一点。这种方法只会删除基于索引的。

In [1]: [{i: List1[:idx]+List1[idx+1:]}for idx, i in enumerate(List1)]
Out[1]: [{1: [2, 3, 4]}, {2: [1, 3, 4]}, {3: [1, 2, 4]}, {4: [1, 2, 3]}]

如果你想删除列表中所有出现的内容,你可以使用这个

[{i: list(filter((i).__ne__, List1[:]))}for idx, i in List1]

使用字符串列表执行,

In [2]: [{i: list(filter((i).__ne__, List1[:]))}for idx, i in enumerate(List1)]
Out[2]: 
[{'a': ['b', 'c', 'd']},
{'b': ['a', 'c', 'd']},
{'c': ['a', 'b', 'd']},
{'d': ['a', 'b', 'c']}]

相关内容

  • 没有找到相关文章

最新更新