ruby - 如何解析列表中的两个元素以创建一个新元素
问题描述
我在 1850 个文件中重复了这个输入:
[
{
"id"=>66939,
"login"=>"XXX",
"url"=>"https://website.com/XX/users/XXX"
},
...
{}
]
我想通过查找登录名来创建一个列表,我可以使用如下语法检索 ID:
users_list[XXX]
这是我想要的输出:
{"XXX"=>"66570", "XXX"=>"66570", "XXX"=>"66570", "XXX"=>"66570", ... }
我的代码是:
i2 = 1
while i2 != users_list_raw.parsed.count
temp_user = users_list_raw.parsed[i2]
temp_user_login = temp_user['login']
temp_user_id = temp_user['id']
user = {
temp_user_login => temp_user_id
}
users_list << user
i2 += 1
end
我的输出是:
[{"XXX":66570},{"XXX":66569},{"XXX":66568},{"XXX":66567},{"XXX":66566}, ... {}]
但这不是我想要的。
我的代码有什么问题?
解决方案
hash[key] = value
在哈希中添加一个条目。所以我猜你的情况users_list[temp_user_login] = temp_user_id
但我不确定你为什么要这样做。我认为您可以通过使用以下语句登录来查找用户的 ID:
login = XXX
user = users_list.select {|user| user["login"] == login}.first
id = user["id"]
也许把它放在一个get_id(login)
以登录名作为参数的函数中?
此外,如果您要像这样操作大量数据,您可能需要查看数据库。ORM(对象关系映射器)在 Ruby 中可用,例如 Data Mapper 和 Active Record(与 Rails 捆绑在一起),它们允许您“建模”数据并从存储在数据库中的数据创建 Ruby 对象,而无需手动编写 SQL 查询.
推荐阅读
- javascript - 限制用户使用浏览器后退按钮返回或至少限制反应
- sql - 查找具有范围的表以填充属性
- automated-tests - 如何使用空手道 UI 在 chrome 中查看打印模式
- javascript - 如何知道使用哪个版本的 types 包
- java - 如何在post方法Spring中从表单数据值中获取字符串
- sql - 用上限计算 SUM 并按比例乘以 SQL 中的系数
- excel - 运行时错误 '1004: Range 类的 PasteSpecial 方法失败
- r - 在R中自动化数据框宽度
- amazon-web-services - Step 函数跨账户访问 DynamoDB
- javascript - 获取迭代器函数最终值的惯用方法是什么?