我有以下一组代码
adapter = new SimpleAdapter(
MainActivity.this, dataList,
R.layout.list_item, new String[] { TAG_NAME, TAG_IBU, TAG_ABV},
new int[] { R.id.name, R.id.ibu, R.id.abv });
我尝试做的是使用下面的列表作为示例,创建一个嵌套字典,每个字典都有自己的密钥。这样做的目的是因为我有一个报告,它会在添加之前检查上面为重复项创建的字典。
市---队
洛杉矶----湖人队CHI ----公牛队
纽约----尼克斯队DAL ----小牛队
BOS ----凯尔特人队我能够创建第一个字典(城市),但我似乎无法根据城市为团队名称创建第二个(嵌套)字典。帮助会很棒。谢谢!
答案 0 :(得分:6)
首先创建 - 然后将新字典添加到外部字典。以下子应该给你一些想法:
*([! ])
答案 1 :(得分:0)
我发现首先创建子词典并将其添加到主词典中非常容易。在这里,我有" paydownDictionary"作为主要的一个,我将子字典添加到具有两个值的子字典中。因此,如果您要将它应用于您的,那么您将获得每个城市的团队列表并说出例如:
子词典。添加快船,建立19 ??
子词典。加上湖人,建立了19 ??
如果城市发生变化
将子词典添加到词典中 然后为下一组创建一个新的子字典。我的代码看起来像 - 编辑后看起来更像你的代码
Option Explicit
Public CityDictionary As New Scripting.Dictionary
Sub theDictionary()
Dim wsName2 As String
Dim payDownDictionary As New Scripting.Dictionary 'set in public
Dim subDictionary As Scripting.Dictionary
wsName2 = ActiveSheet.Name
'keyColumn = city ' column A
'secondColumn = team 'column B
lastColumn = Sheets(wsName2).Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column
lastRow = Sheets(wsName2).Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
previousCell = ""
For Each cell In xlfile.Sheets(wsName2).range(Sheets(wsName2).Cells(2, 1), Sheets(wsName2).Cells(lastRow, 1)) 'this is your key column
If cell.Value <> "" Then
If previousCell = "" Then 'it's the first item
'get the first item and add it to the subdictionary
Set subDictionary = New Scripting.Dictionary
subDictionary.Add cell.Offset(0, 1).Value, cell.Offset(0, 2).Value 'offest 1 would be team, offset 2 is date established
ElseIf cell.Value = previousCell Then 'we already have this cell value in the dictionary
subDictionary.Add cell.Offset(0, 1).Value, cell.Offset(0, 2).Value
Else ' new cell value for the dictionary
'previousCell is your primaryKey Column
CityDictionary.Add previousCell, subDictionary ' add the sub dictionary to the pay Down Dictionary
Set subDictionary = New Scripting.Dictionary
subDictionary.Add cell.Offset(0, 1).Value, cell.Offset(0, 2).Value
End If
previousCell = cell.Value
End If
Next
我觉得如果你想走这条路,它可能比你的方法更清洁。
我在每个子字典中都有大约15到200,因为我正在考虑债券到期的利率。所以这种方式对我来说很棒,最多3个?在一个城市的NBA球队,它可能没有其他方法那么高效。