我有两个阵列。
第一个是一组键:
[476126287, 373653306, 294631223, 14179684, 257968797, 124332158, 315977804, 416828937, 406598349, 397492006, 36353099, 395888209, 13870552, 381624315, 14216932, 40042684, 346236824, 222538115, 256661100, 89384897, 26294306, 264885135, 259371103, 246437428, 21024561, 215167635, 201236316, 178544572, 15290498, 23330844, 90943456, 103080311, 31276046, 18377430, 48403129, 18435047, 89850690]
第二个是一个大型(词典)的键值对。
[[476126287, "BURANE"], [373653306, "PENAHI"], [294631223, "CIWUCU"], [14179684, "TOHAPU"], [257968797, "SUZEJU"], [124332158, "DUPAKE"], [315977804, "MIZEJU"], [416828937, "ZOPIHA"], [406598349, "YAYOJI"], [397492006, "CISOCI"], [36353099, "TAWIHU"], [395888209, "SUCOVE"], [13870552, "TACIYA"], [40042684, "WEBUWA"], [346236824, "WOPESI"], [222538115, "KECUGA"], [256661100, "DUVUVA"], [89384897, "FOZIJA"], [26294306, "JEFOWA"], [264885135, "TEYABA"], [259371103, "NOREDA"], [246437428, "JEDUJE"], [21024561, "WABITO"], [215167635, "LOJORE"], [201236316, "SUMESE"], [178544572, "GEYOGE"], [15290498, "TAROBA"], [23330844, "TAFUBA"], [90943456, "HISABE"], [103080311, "GAVISA"], [31276046, "KIFAKA"], [18377430, "YIYAWU"], [48403129, "VUTIPE"], [18435047, "WIWUZO"], [89850690, "RIPIFO"]]
如何用第二组的值替换第一个数组的键?如果找不到,请用nil替换key?
答案 0 :(得分:4)
您希望以哈希值进行查找:
arr1 = [476126287, 373653306, 294631223, 14179684, 257968797, 124332158, 315977804, 416828937, 406598349, 397492006, 36353099, 395888209, 13870552, 381624315, 14216932, 40042684, 346236824, 222538115, 256661100, 89384897, 26294306, 264885135, 259371103, 246437428, 21024561, 215167635, 201236316, 178544572, 15290498, 23330844, 90943456, 103080311, 31276046, 18377430, 48403129, 18435047, 89850690]
arr2 = [[476126287, "BURANE"], [373653306, "PENAHI"], [294631223, "CIWUCU"], [14179684, "TOHAPU"], [257968797, "SUZEJU"], [124332158, "DUPAKE"], [315977804, "MIZEJU"], [416828937, "ZOPIHA"], [406598349, "YAYOJI"], [397492006, "CISOCI"], [36353099, "TAWIHU"], [395888209, "SUCOVE"], [13870552, "TACIYA"], [40042684, "WEBUWA"], [346236824, "WOPESI"], [222538115, "KECUGA"], [256661100, "DUVUVA"], [89384897, "FOZIJA"], [26294306, "JEFOWA"], [264885135, "TEYABA"], [259371103, "NOREDA"], [246437428, "JEDUJE"], [21024561, "WABITO"], [215167635, "LOJORE"], [201236316, "SUMESE"], [178544572, "GEYOGE"], [15290498, "TAROBA"], [23330844, "TAFUBA"], [90943456, "HISABE"], [103080311, "GAVISA"], [31276046, "KIFAKA"], [18377430, "YIYAWU"], [48403129, "VUTIPE"], [18435047, "WIWUZO"], [89850690, "RIPIFO"]]
h = Hash[arr2]
arr1.map { |el| h[el] }
答案 1 :(得分:0)
你可以使用Hash(而不是数组)来存储你的字典。 它是ruby中键值对的正确数据结构。
data = [476126287, 373653306, 294631223, 14179684, 257968797, 124332158, 315977804, 416828937, 406598349, 397492006, 36353099, 395888209, 13870552, 381624315, 14216932, 40042684, 346236824, 222538115, 256661100, 89384897, 26294306, 264885135, 259371103, 246437428, 21024561, 215167635, 201236316, 178544572, 15290498, 23330844, 90943456, 103080311, 31276046, 18377430, 48403129, 18435047, 89850690]
translation = Hash[ 476126287 => "BURANE", 373653306 => "PENAHI", 294631223 => "CIWUCU", 14179684 => "TOHAPU", 257968797 => "SUZEJU", 124332158 => "DUPAKE", 315977804 => "MIZEJU", 416828937 => "ZOPIHA", 406598349 => "YAYOJI", 397492006 => "CISOCI", 36353099 => "TAWIHU", 395888209 => "SUCOVE", 13870552 => "TACIYA", 40042684 => "WEBUWA", 346236824 => "WOPESI", 222538115 => "KECUGA", 256661100 => "DUVUVA", 89384897 => "FOZIJA", 26294306 => "JEFOWA", 264885135 => "TEYABA", 259371103 => "NOREDA", 246437428 => "JEDUJE", 21024561 => "WABITO", 215167635 => "LOJORE", 201236316 => "SUMESE", 178544572 => "GEYOGE", 15290498 => "TAROBA", 23330844 => "TAFUBA", 90943456 => "HISABE", 103080311 => "GAVISA", 31276046 => "KIFAKA", 18377430 => "YIYAWU", 48403129 => "VUTIPE", 18435047 => "WIWUZO", 89850690 => "RIPIFO" ]
然后使用map迭代数据数组并用关联的值替换每个键。这个零是使用哈希的副作用
print data.map{|key| translation[key]}
答案 2 :(得分:0)
ar1 = [476126287, 373653306, 294631223, 14179684, 257968797, 124332158, 1].shuffle
ar2 = [[476126287, "BURANE"], [373653306, "PENAHI"], [294631223, "CIWUCU"], [14179684, "TOHAPU"], [257968797, "SUZEJU"], [124332158, "DUPAKE"]]
正如其他人所说,哈希是你应该想到的。也就是说,Array具有assoc
方法,适用于小数据/一次查找:
ar1.map{|el| ar2.assoc(el)}
#=> [[476126287, "BURANE"], [373653306, "PENAHI"], [294631223, "CIWUCU"], [14179684, "TOHAPU"], [257968797, "SUZEJU"], [124332158, "DUPAKE"], nil]