在python中,我执行“ dictionary = {” key“:[value,value],(etc)}”在Visual Basic中如何做到这一点?

时间:2018-10-03 11:51:08

标签: python vb.net list dictionary

我正在VB中为我的计算机科学课做一个小型冒险游戏,并且要对角色进行盘点,我需要知道如何制作字典(这样我才能知道物品的名称)和列表作为项目的值(列表类似于obj = [Quantity,Damage_Dealt(或Health_Received)])。 我做了一些研究,然后尝试做

Dim knife As New List(Of Integer)
knife.add(1)#the first one is how many knives and the second is the dmg
knife.add(1)

Dim inv As New Dictionary(Of String, List(Of Integer))
inv.add("knife", knife)

,但是有些东西丢失了,或者希望有一种更简单的方法可以做到。 即使可以创建2或3维数组 (例如inv = [[knife, 1, 1], [bread, 2, 0]]

我将感激更改python的最直接方法

dictionary = {"key": [value, value], (etc)}

进入VB 预先谢谢你

我忘了提到类中所有子类中的所有内容。

3 个答案:

答案 0 :(得分:0)

您完全可以制作一个新列表(“字典(字符串),列表(整数)”)并填充它。

您似乎已经知道代码了。祝您实施愉快!

答案 1 :(得分:0)

这是如何完成您所寻找的东西的基本示例。

Public Sub TestData()
        //Create List and populate it

        Dim list As New List(Of KeyValuePair(Of String, List(Of Integer)))
        Dim integerList As List(Of Integer) = New List(Of Integer)
        integerList.Add(1)
        integerList.Add(2)

        list.Add(New KeyValuePair(Of String, List(Of Integer))("Test", integerList))



        //Iterate through the list to get data

        For Each pair As KeyValuePair(Of String, List(Of Integer)) In list
            Dim key As String = pair.Key

            Dim newIntegerList As New List(Of Integer)
            For Each value As Integer In pair.Value
                newIntegerList.Add(value)
            Next
        Next
    End Sub

编辑:由于不喜欢VB注释,因此不得不将注释更改为C#注释。但是显然您会摆脱这些。

答案 2 :(得分:0)

可以通过创建列表字典或数组字典来实现。但是,如果必须依靠索引来找到正确的属性,则代码将变得混乱。

一个更好的选择是使用Tuples;但是,更多地将它们用于临时存储,中间结果以及返回多个值的函数。

物品是游戏的重要方面。创建一个Item类!这将使您更轻松地处理物品

Public Class Item
    Property Quantity As Integer
    Property Damage As Integer
    Property Health As Integer
End Class

您可以使用

对其进行初始化
Dim Items As New Dictionary(Of String, Item) From {
   {"knife", New Item With {.Quantity = 1, .Damage = 0, .Health = 100}},
   {"arrow", New Item With {.Quantity = 5, .Damage = 0, .Health = 100}}
}

现在,您可以轻松检索属性

Dim knifeDamage = Items("knife").Damage

Classes还有其他优点:您可以向其中添加Subs和Functions,可以派生出具有仅适用于它们的属性的更多特定项目类型。