如何为一组 ID 中的值分配名称,以便 Python 算法能够运行它们

问题描述 投票:0回答:1

我会尽量不要太长。我将包括我认为帮助我解决问题所必需的内容。有一些参考的算法我不会包括在内。只要知道它们确实按照书面规定工作即可。我所包含的是对所需属性的引用以及我所拥有的不起作用的代码部分。

问题:

  1. 我的一组值是 ID。这些 ID 代表来自另一个类的对象,并且位于哈希表中。我需要 Python 将这些 ID 链接到该哈希表中的对象
  2. 一旦Python成功读取这些ID作为它们的对象,我怎样才能让Python将这些值(ID)视为名称pkg1,以便我的算法将通过它们运行?

这是代码/示例。下面的包对象,它位于包类和哈希表中(我们使用包id作为键)

p29 = Packages(29, '1330 2100 S', 'Salt Lake City', 'UT', '84106', '10:30 AM', '2', '')

myHash.insert(29,p29)

正如您所看到的,我在包类中为所有包创建了对象,它们都在哈希表中。包 29 只是我如何手动完成所有包的一个示例。现在这就是我现在所处的位置。我必须创建一个卡车类,该类将这些包保存在名为“packages Load as a set”的属性中,并使用它们的包 ID。正如您所看到的,该包对象的包 ID 29 位于 t1 的末尾。请忽略其他值,它们现在不重要。只要知道卡车对象末尾的集合是包Load即可。

t1 = Truck(18, 0, '4001 South 700 East', [29, 13, 14, 15, 16, 19, 20, 37, 40, 34, 30, 31, 27, 33, 35, 39]) t2 = Truck(18, 0, '4001 South 700 East', [3, 1, 25, 6, 18, 36, 38, 2, 4, 5, 11, 21, 22, 23, 24]) t3 = Truck(18, 0, '4001 South 700 East', [9, 32, 28, 7, 8, 10, 12, 17, 26])

这是我的运行包的算法代码。我确信它不完全正确,但在我测试它之前,我仍然缺少上面列出的两个问题的一些代码。我必须遵循伪代码。

`# loop over all packages on t1 until length of t1.packagesLoad <1
while len(t1.packagesLoad) > 0:
    # minValue = 1000
    minValue = 1000
    # minPackage = None
    minPackage = None
    # Loop through all packages t1 call each package pkg1.
    for pkg1 in t1.packagesLoad:
        # milesBetween = distanceBetween (t1.currentAddress,pkg1.address,addressList,List2DDistances)
        milesBetween = distanceBetween(t1.currentAddress, pkg1.address, addressList, list2DDistances)
        # if milesBetween < minValue, if true
        if milesBetween < minValue:
            # minPackage = pkg1
            minPackage = pkg1
            # minValue = milesBetween
            minValue = milesBetween
    # update t1.currentAddress to minPackage.address
    t1.currentAddress = minPackage.address
    # remove minPackage from t1
    del t1.packagesLoad[minPackage]
    # update t1.mileage to t1.mileage + minValue
    t1.mileage = t1.mileage + minValue`

所以....

  1. 我有一组值,它们是 ID。这些 ID 代表来自另一个类的对象,并且位于哈希表中。我需要 Python 将这些 ID 链接到该哈希表中的对象。(t1 中设置的 packagesLoad - 值是需要链接到名为 myhash 的哈希表中的包对象的包 id。

  2. 一旦Python成功读取这些ID作为它们的对象,我怎样才能让Python将这些值(ID)视为名称pkg1,以便我的算法将通过它们运行? (t1.packagesLoad 中的 id 需要被视为 pkg1,以便 Python 将运行它们的地址 - 这些地址保存在包类/哈希表的包对象中)。我必须对大部分内容进行代码块才能发布此内容。

这是我收到的错误:

回溯(最近一次调用最后一次): 文件“C:\Users lecc\PycharmProjects\pythonProject\Main.py”,第 225 行,位于 MilesBetween = distanceBetween(t1.currentAddress, pkg1.address, addressList, list2DDistances) ^^^^^^^^^^^^^ 属性错误:“int”对象没有属性“地址”

有道理,因为我不知道如何让Python读取包ID作为它们代表的包来提取它们的地址,然后运行集合

python algorithm set
1个回答
0
投票
  1. packagesLoad
    集中的包 ID 链接到哈希表中的包对象。
  2. 在循环中将这些包对象视为
    pkg1
    ,以便您可以访问它们 属性。

你可以像这样实现它:

while len(t1.packagesLoad) > 0:
    minValue = 1000
    minPackage = None
    for pkgId in t1.packagesLoad:
        pkg1 = myHash[pkgId]
        milesBetween = distanceBetween(t1.currentAddress, pkg1.address, addressList, list2DDistances)
        if milesBetween < minValue:
            minPackage = pkg1
            minValue = milesBetween
    t1.currentAddress = minPackage.address
    t1.packagesLoad.remove(minPackage.id)
    t1.mileage = t1.mileage + minValue
  

希望对楼主有用! 🤠

© www.soinside.com 2019 - 2024. All rights reserved.