【问题标题】:Check values in a dictionary/list检查字典/列表中的值
【发布时间】:2020-03-31 09:54:56
【问题描述】:

我正在尝试为我的课程编程编写一个游戏。基本上,有一个棋盘,上面放置了不同的单元。假设我的字典是这样的:

board = {'map': [{'x': 39, 'y': 41}],
         'hubs': [{'x': 21,
                   'y': 3,
                   'structure_points': 1000,
                   'capacity': 1500,
                   'regen_rate': 25},
                  {'x': 21,
                   'y': 38,
                   'structure_points': 1000,
                   'capacity': 1500,
                   'regen_rate': 25}],
         'peaks': [{'x': 10, 'y': 10, 'intensity': 200},
                   {'x': 11, 'y': 10, 'intensity': 300},
                   {'x': 12, 'y': 10, 'intensity': 400},
                   {'x': 10, 'y': 11, 'intensity': 200},
                   {'x': 10, 'y': 12, 'intensity': 500}]}

我想“检查”一个地方是否已经有一个单元。例如,如果我输入 21 和 38 作为坐标,我的函数如何告诉我那里有一个集线器?我不知道我的问题是否有意义,但我不知道如何让它发挥作用。任何帮助将不胜感激,谢谢!

【问题讨论】:

    标签: python python-3.x list jupyter-notebook


    【解决方案1】:
    
    def hub_exists(board, x, y):
        for hub in board.get('hubs', []):
            if hub.get('x') == x and hub.get('y') == y:
                return True
        return False
    

    您遍历板字典中的所有集线器,如果找到正确的集线器,则返回True,否则在用尽所有选项后,返回False

    【讨论】:

      【解决方案2】:

      您可以遍历您的列表 board['hubs'] 并检查是否有任何 dict 有您的坐标:

      def check(x, y, board):
           return any(c['x'] == x and c['y'] == y  for c in board['hubs'])
      
      check(21, 38, board)
      

      输出:

      True
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-05
        • 2019-09-30
        • 2022-11-29
        • 1970-01-01
        • 2016-09-29
        • 1970-01-01
        • 2019-02-13
        相关资源
        最近更新 更多