How to deal with unequal element list to unpack into multiple variables (ValueError: too many values to unpack (expected 4))

How to deal with unequal element list to unpack into multiple variables (ValueError: too many values to unpack (expected 4))

我想从我的数据集中提取数据,但我发现该列表包含内部元素长度不等的嵌套列表。

我的代码从列表中获取解压值

obtainedDatetime, itemName, itemType, itemRarity, bannerCode, obtainedTimestamp = item

包含 4 个元素的数据集。

[
  "2021-04-20 04:19:22",
  "Skyrider Sword",
  "Weapon",
  3
]

包含 6 个元素的数据集(但我只想要前 4 个元素)

[
  "2022-01-10 16:26:53",
  "Bloodtainted Greatsword",
  "Weapon",
  3,
  "301",
  "1641801960000166133"
]

如果列表包含 6 个元素,Python 将引发错误。

ValueError: too many values to unpack (expected 4)

当我设置变量以将解压缩后的值设置为 6 时,我收到了一个错误。

ValueError: not enough values to unpack (expected 6, got 4)

如何处理嵌套列表中不相等的元素

使用扩展的可迭代解包功能:

obtainedDatetime, itemName, itemType, itemRarity, bannerCode, obtainedTimestamp, *rest = item

因此,rest 将包含一个包含可迭代对象其余部分的列表。如果您对此数据不感兴趣,按照惯例,我们会将其命名为 _。所以:

obtainedDatetime, itemName, itemType, itemRarity, bannerCode, obtainedTimestamp, *_ = item

您可以将容器解包为任意数量的变量,捕获虚拟变量中剩余的任何内容,如下所示:

a, b, c, *_ = [1, 2, 3, 4, 5, 6]

a    # 1
b    # 2
c    # 3
_    # [4, 5, 6]

关键是最后一个变量(也可以给它起个名字)之前的*