You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python集合union方法不同传参的代码差异及结果一致原因咨询

Python集合union操作的差异解析

咱们先把你给出的代码片段贴出来,方便对照分析:

>>> s=set("Hacker")
>>> s {'k', 'a', 'e', 'H', 'r', 'c'}
>>> s.union("Rank") {'c', 'R', 'k', 'n', 'r', 'a', 'e', 'H'}
>>> s.union({"Rank":1}) {'c', 'Rank', 'k', 'r', 'a', 'e', 'H'}
>>> s.union({"Rank":2}) {'c', 'Rank', 'k', 'r', 'a', 'e', 'H'}
>>> s.union({"Rank":3}) {'c', 'Rank', 'k', 'r', 'a', 'e', 'H'}

几次union操作的差异原因

  • 第一次调用s.union("Rank")时,传入的参数是字符串。字符串在Python里是可迭代对象,union方法会遍历字符串的每一个字符,把这些字符作为元素和原集合s合并。所以实际是把{'R','a','n','k'}和s做并集,结果里会多出R、n这两个字符。
  • 后面三次调用union时,传入的参数是字典。在Python中,迭代字典默认只会遍历它的键(key),而不是键值对或者值。这三个字典的键都是"Rank",所以不管对应的值是1、2还是3,union方法实际处理的都是只包含"Rank"这一个元素的可迭代对象。

后三次结果完全相同的原因

原集合s里并没有"Rank"这个元素,所以第一次和{"Rank":1}做并集时,会把"Rank"添加到结果里。而后面两次调用时,原集合s本身没有变化,传入的字典的键依然是"Rank"——这个元素已经在第一次合并后的结果里存在了,所以并集操作不会再添加新元素,最终三次的结果就完全一致了。

内容的提问来源于stack exchange,提问作者Junth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:43:28