1
A
回答
0
我将把图像1作为表1和图像2作为表2.
在表2中的一行由水平,1类,2类,...,X类 。我们可以看到,你需要为每个类别一栏,所以你要在这里做的第一件事就是从表中获取的一组类别的1
require 'set'
# A set of all the categories extracted from table 1
categories = Set.new
table1 = [
{ title: 'Item 1', level: 1, category: 'Category 1' },
{ title: 'Item 2', level: 1, category: 'Category 2' },
...
]
# Extract categories from table 1
table1.each do |item|
categories << item[:category] # add category to set
end
,我们可以在这里看到的下一件事是,在表2项目按其级别和类别排列。我们需要一种方式来说“给我的项目(不止一种可能)在X级与Y类”。因此,表2可以表示类似如下:
table2 = {
level1: { category1: [...], category2: [...], category3: [...] },
level2: { category1: [...], category2: [...], category3: [...] },
}
举个例子,这样,你会使用
table2[:level1][:category2]
下一个任务是从表转换得到(1级,2类)项目1到表2.考虑到表2的上述表示,这很简单,并且可以通过遍历表1并将该项(或者其标题)添加到table2
散列的适当的级别和类别数组中来完成。
# Arrange items by level and category
table1.each do |item|
table2[item[:level]] ||= {} # hash of categories for this item's level
table2[item[:level]][item[:category]] ||= [] # array of items for this item's level and category
table2[item[:level]][item[:category]] << item[:title] # add item to its corresponding array
end
...你现在有你想要的表示你的数据。
表2中要注意的一件事是(级别1,类别1)有两个项目,并使用两个单独的行来表示这一点。如果你想这样输出,那么你需要遍历每个级别,并为每个级别遍历每个类别,在每个项目在(级别,类别)打印一行。你可以看到如何做到这一点在下面的完整的源代码的例子(你是免费的,如果你想使用):
require 'set'
table1 = [
{ title: 'Item 1', level: 1, category: 'Category 1' },
{ title: 'Item 2', level: 1, category: 'Category 2' },
{ title: 'Item 3', level: 2, category: 'Category 3' },
{ title: 'Item 5', level: 3, category: 'Category 3' },
{ title: 'Item 6', level: 1, category: 'Category 1' },
{ title: 'Item 7', level: 2, category: 'Category 2' },
{ title: 'Item 8', level: 4, category: 'Category 1' },
{ title: 'Item 9', level: 4, category: 'Category 3' }
]
table2 = {
# 1: { category1: [...], category2: [...], category3: [...] },
# 2: { category1: [...], category2: [...], category3: [...] },
}
# A set of all the categories extracted from table 1
categories = Set.new
# Extract categories and also arrange items by level and category
table1.each do |item|
categories << item[:category] # add category to set
table2[item[:level]] ||= {} # hash of categories for this item's level
table2[item[:level]][item[:category]] ||= [] # array of items for this item's level and category
table2[item[:level]][item[:category]] << item[:title] # add item to its corresponding array
end
# Print headers for table 1
puts
puts 'Title | Level | Category'
# Print rows for table 1
table1.each do |item|
print item.values
puts
end
# Print headers for table 2
puts
print 'Level | '
categories.each do |category|
print category + ' | '
end
puts
# Print rows for table 2
table2.each do |level, categorised_items|
row = 0
loop do
last_row = true
# level for this row
print level
print ' | '
# print item for each category
categories.each do |category|
if categorised_items[category] && categorised_items[category][row]
print categorised_items[category][row] + ' | '
# check if an item exists for the next row
last_row = false if categorised_items[category][row + 1]
else
print ' | '
end
end
puts
break if last_row
row += 1
end
end
输出:
Title | Level | Category
["Item 1", 1, "Category 1"]
["Item 2", 1, "Category 2"]
["Item 3", 2, "Category 3"]
["Item 5", 3, "Category 3"]
["Item 6", 1, "Category 1"]
["Item 7", 2, "Category 2"]
["Item 8", 4, "Category 1"]
["Item 9", 4, "Category 3"]
Level | Category 1 | Category 2 | Category 3 |
1 | Item 1 | Item 2 | |
1 | Item 6 | | |
2 | | Item 7 | Item 3 |
3 | | | Item 5 |
4 | Item 8 | | Item 9 |
相关问题
- 1. 如何将数据表转换为类似ReportingService的矩阵?
- 2. 将类似矩阵的对象转换为矩阵
- 3. 如何将列表转换为矩阵?
- 4. 如何将表格转换为矩阵?
- 5. 如何将3x3旋转矩阵转换为4x4矩阵?
- 6. 将基于TRUE/FALSE矩阵的矩阵转换为R?
- 7. 将矩阵类转换为IplImage *
- 8. 如何将矩阵转换为数组?
- 9. 如何将数组转换为矩阵?
- 10. 如何将类“dsCMatrix”的稀疏矩阵转换为R中的正则矩阵?
- 11. 将列转换为矩阵
- 12. 将RleViews转换为矩阵
- 13. 将数据表转换为矩阵
- 14. 将列表转换为numpy矩阵
- 15. 将矩阵列表转换为向量
- 16. 将列表转换为稀疏矩阵
- 17. 将嵌套列表转换为矩阵
- 18. 将多类型2D矩阵转换为浮点矩阵?
- 19. 如何将GPU(gpuR)矩阵转换为标准R矩阵?
- 20. 如何将共生矩阵转换为稀疏矩阵
- 21. 如何将doc-term矩阵转换为term-term矩阵?
- 22. 如何将3D矩阵转换为多个2D矩阵?
- 23. 如何在MATLAB中将灰度矩阵转换为RGB矩阵?
- 24. 如何将列矩阵转换为行矩阵在MATLAB
- 25. 将矩阵市场转换为CRS转换(稀疏矩阵)
- 26. 将转换矩阵转换为列表列表
- 27. 将阵列数组转换为矩阵
- 28. 将矩阵转换为1维阵列
- 29. 如何将列表转换为类似的列表?
- 30. 如何将gdi +类似于位图的结构转换为HDC?
谢谢cthorne,我会申请你的解决方案,并回到你身边:) – Yousef