我想通过散列搜索只有一个值的键,然后将该值除以2.我该怎么做?
实施例
hash = { a => [4], b => [2, 4, 5], c => [3, 5] }
寻求结果
hash = { a => [2], b => [2, 4, 5], c => [3, 5] }
答案 0 :(得分:2)
Sub createfolder_excel()
Dim oInbox As Outlook.MAPIFolder
Dim oSearch As Outlook.Search
Set oInbox = Outlook.Application.GetNamespace("MAPI").GetDefaultFolder(Outlook.olFolderInbox).Parent.Folders("Fin Reporting").Folders("July")
Set oSearch = Outlook.Application.AdvancedSearch("'" & oInbox.FolderPath & "'")
oSearch.Save ("TestSearch")
End Sub
您可以使用hash = {:a=>[4], :b=>[2, 4, 5], :c=>[3, 5]}
:
transform_values
或hash.transform_values { |v| v.one? ? [v[0]/2.0] : v }
#=> {:a=>[2.0], :b=>[2, 4, 5], :c=>[3, 5]}
map
答案 1 :(得分:1)
这应该可以解决问题,只需迭代每个键/值对并检查值的长度,如果它只有1项,则将哈希中的键设置为等于原始值的一半。
hash = { a: [4], b: [2, 4, 5], c: [3, 5] }
# => {:a=>[4], :b=>[2, 4, 5], :c=>[3, 5]}
hash.each do |key, values|
if 1 == values.length
hash[key] = [values.first / 2]
end
end
# => {:a=>[2], :b=>[2, 4, 5], :c=>[3, 5]}