Ruby中如何用类似Python元组的结构实现哈希键与集合去重?
Ruby中实现类似Python元组的去重与哈希键功能
在Ruby里,你可以直接用**数组(Array)**替代Python的元组,实现相同的去重和哈希键功能——Ruby的数组默认支持哈希计算和相等性判断,因此可以直接作为Set的成员或Hash的键。
1. 用Set实现列表去重
首先需要引入Ruby的set标准库,然后将包含姓名的数组传入Set.new,自动完成去重:
require 'set' # 初始化包含重复项的嘉宾列表,用数组替代Python的元组 cool_podcast_guests = Set.new([ ['Emma', 'Suter'], ['Dave', 'Warner'], ['Evie', 'Wilde'], ['Emma', 'Suter'] # 重复项会被自动去除 ])
2. 用数组作为Hash的键构建地址映射
遍历去重后的集合,将姓名数组作为Hash的键,存储对应的地址:
interview_these = {} cool_podcast_guests.each do |forename, surname| interview_these[[forename, surname]] = lookup_address(forename, surname) end
或者用更简洁的Ruby式写法,直接通过to_h方法转换:
interview_these = cool_podcast_guests.to_h do |full_name| [full_name, lookup_address(*full_name)] end
注意事项
Ruby的数组是可变对象,如果你在将数组作为Hash键或Set成员后修改了数组内容,会导致其哈希值变化,无法再匹配原有的键或Set元素。因此使用时要确保数组内容保持不变,这点和Python的不可变元组有所区别,但只要遵循这一点,就能实现完全一致的效果。
内容的提问来源于stack exchange,提问作者Kim
相关产品推荐
相关产品推荐

