gpt4 book ai didi

Ruby:同时循环两个散列,其中一个是嵌套散列

转载 作者:太空宇宙 更新时间:2023-11-03 18:05:55 24 4
gpt4 key购买 nike

我是编码和 ruby​​ 的新手,有一项类作业。我们应该从出租车司机的 excel 中获取数据集,并找出每个司机的乘车次数和收入。我们可以自由地以任何我们想要的方式构建代码。下面是我的代码。

我想做的是计算乘车次数并将它们存储在散列 rides_per_driver 中。但是,通过 if 语句,我得到了“没有将 Array 隐式转换为 Integer (TypeError)”。如何让程序为 rides_per_driver 获取 keys 并迭代哈希 rides

感谢任何帮助。谢谢

# Stored rides data.
rides = {
ride_1: {
driver_id: "DR0004",
date: "3rd Feb 2016",
cost: 5,
rider_id: "RD0022",
rating: 5
},

ride_2: {
driver_id: "DR0001",
date: "3rd Feb 2016",
cost: 10,
rider_id: "RD0003",
rating: 3
},

ride_3: {
driver_id: "DR0002",
date: "3rd Feb 2016",
cost: 25,
rider_id: "RD0073",
rating: 5
}
}



# iterate over the hash of hashes. If the driver id is x then
# add one ride to the tally.



# Storage for number of rides per driver
rides_per_driver = {
"DR0001" => 0,
"DR0002" => 0,
"DR0003" => 0,
"DR0004" => 0
}
amount_earned_per_driver = []

rides_per_driver.each do |x|
if rides_per_driver.has_key?(rides_per_driver[x])
rides.each do|ride_num, ride_data|
rides.each do |k, v|
rides_per_driver += 1
end
end
else
rides.each do|ride_num, ride_data|
rides.each do |k, v|
rides_per_driver = 1
end
end
end


end

最佳答案

rides = [
{ driver_id: "DR0004", date: "3rd Feb 2016", cost: 5, rider_id: "RD0022", rating: 5 },
{ driver_id: "DR0001", date: "3rd Feb 2016", cost: 10, rider_id: "RD0003", rating: 3 },
{ driver_id: "DR0002", date: "3rd Feb 2016", cost: 25, rider_id: "RD0073", rating: 5 },
{ driver_id: "DR0004", date: "3rd Feb 2016", cost: 5, rider_id: "RD0022", rating: 5 },
]

rides.each_with_object({}) do |ride, h|
h.update(ride[:driver_id]=>{ rides: 1, earnings: ride[:cost] }) do |_,o,n|
{ rides: o[:rides]+1, earnings: o[:earnings]+n[:earnings] }
end
end
#=> {"DR0004"=>{:rides=>2, :earnings=>10},
# "DR0001"=>{:rides=>1, :earnings=>10},
# "DR0002"=>{:rides=>1, :earnings=>25}}

这使用了 Hash#update 的形式(又名 merge!),它使用一个 block 来确定要合并的两个散列中存在的键的值。有关详细信息,请参阅文档,尤其是三个 block 变量(_on)的定义。 (我用下划线代替了公共(public) key ,以表示该 key 未用于 block 计算。)

关于Ruby:同时循环两个散列,其中一个是嵌套散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45656997/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com