如何在Pharo中将两个OrderedCollection转换为指定键值对Dictionary?
Pharo 构造对应键值对字典的正确方法
问题分析
你当前的代码通过do:循环尝试构造字典,但逻辑错误:每次循环都将整个t集合作为键、整个items集合作为值重新创建字典,循环结束后仅保留最后一次创建的结果,因此得到的是单键值对的字典,而非期望的逐个元素对应。
正确实现方式
方法1:使用专用API(最简洁)
Pharo提供了直接通过两个集合创建字典的方法,无需手动循环:
dict := Dictionary newFromKeys: t values: items.
方法2:手动生成关联对象后创建字典
如果需要更灵活的配对逻辑,可以先将两个集合的元素一一配对成Association对象,再构造字典:
"生成键值关联列表" associations := t with: items collect: [:key :value | key -> value]. "用关联列表创建字典" dict := Dictionary newFrom: associations.
原代码错误原因
原代码中的do:循环完全没有利用循环变量i,每次执行dict := Dictionary newFrom:{t->items}都是创建一个以整个集合为键值的新字典,三次循环后最终只保留最后一次的赋值结果,自然无法得到逐个对应的键值对。
内容的提问来源于stack exchange,提问作者Mansour Faouziel
相关产品推荐
相关产品推荐

