gpt4 book ai didi

python - 将 Python 字典转换为列表 [复杂]

转载 作者:行者123 更新时间:2023-12-01 01:59:08 24 4
gpt4 key购买 nike

我对 python 和这个论坛非常陌生:)我一直在努力学习字典,确实需要一些帮助。

对于我的问题,输入是:

frontier = [
{ 'state': (2, 5, 4, 3, 0, 1), 'path': [ 'PULL' ] },
{ 'state': (2, 4, 5, 0, 3, 1), 'path': [ 'SWAP','PULL' ] },
{ 'state': (2, 5, 4, 0, 1, 3), 'path': [ 'SWAP' ] },
{ 'state': (2, 0, 5, 4, 3, 1), 'path': [ 'PUSH', 'PUSH' ] },

]

我们被告知每个操作的分配值:

  • 推:5
  • 拉:6
  • 掉期:8
  • 翻转:2

    例如。 if [插入,交换] = 5+8

对于这个问题,每个州都有一个我计算过的指定值(启发式)。

然而,计算行动的值(value)却让我难住了。我尝试通过拆分 item['path'] 进行编码,但它创建的列表无法使用。 我不知道如何解决这个问题。

我想列出一个行动 list 。对于上面的问题,它将看起来:

[6, 14, 8, 10]

有人可以告诉我如何通过给定示例的解释和代码来实现它吗?

最佳答案

这是一种方法。

frontier = [{ 'state': (2, 5, 4, 3, 0, 1), 'path': [ 'PULL' ] },
{ 'state': (2, 4, 5, 0, 3, 1), 'path': [ 'SWAP','PULL' ] },
{ 'state': (2, 5, 4, 0, 1, 3), 'path': [ 'SWAP' ] },
{ 'state': (2, 0, 5, 4, 3, 1), 'path': [ 'PUSH', 'PUSH' ] }]

d = {'PUSH': 5, 'PULL': 6, 'SWAP': 8, 'FLIP': 2}

res = [sum(map(d.get, item['path'])) for item in frontier]

print(res)

[6, 14, 8, 10]

说明

  • 创建一个将操作映射到值的字典。
  • summap 结合使用来延迟计算字典中所有操作的总和。
  • 使用列表推导式循环遍历列表中的每个字典。

关于python - 将 Python 字典转换为列表 [复杂],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49866677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com