【发布时间】:2025-03-04 01:10:01
【问题描述】:
给定一个包含列表列表作为值的字典,如何在给定特定条件的情况下替换值列表中的某些子列表。
到目前为止,我尝试的是按长度迭代所有子列表并估计两个子列表中的公共值。
例如,给定以下字典:
d = {(1, 2): [[0, 14], [3]], (10, 12): [[9, 11], [13]]}
还有一个要比较的子列表:
candidates = [14,9]
我希望我的输出是:
d = {(1, 2): [14, 3], (10, 12): [9, 13]}
到目前为止,我尝试的是按长度迭代所有子列表并替换两个子列表的交集:
for k,v in d.items():
for l in v():
if len(l) > 1:
v = list(set(l).intersection(candidates)))
输出表示候选列表和长度大于 1 的子列表之间的公共元素。因此,子列表 [0,14] 将被替换为公共元素 [14]。这个子列表[4] 最终可以与同一键上的[3] 列表合并。导致[14,3]。相同的逻辑适用于第二个键和子列表列表
但我有点卡在通过保留并最终合并长度为
有什么提示吗?
【问题讨论】:
-
你能详细说明预期的输出代表什么吗?
-
我听不懂。如果列表的输入列表是 [[0, 14], [3]],那么与 [14,9] 的交集应该如何是 [14,3]?您能否更清楚地说明您期望的输出是什么?
-
输出表示候选列表和长度大于 1 的子列表之间的公共元素。因此,子列表
[0,14]将被替换为公共元素[14]。这个子列表[4]最终可以与同一键上的[3]列表合并。导致[14,3]。相同的逻辑适用于第二个键和子列表列表
标签: python python-3.x dictionary