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]
关键是最后一个变量(也可以给它起个名字)之前的*
。
我想从我的数据集中提取数据,但我发现该列表包含内部元素长度不等的嵌套列表。
我的代码从列表中获取解压值
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]
关键是最后一个变量(也可以给它起个名字)之前的*
。