循环浏览字典以提取2个值

2024-09-29 19:33:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个机器人设备的项目(通过rest协议访问自动驾驶机器人车)。这段代码从机器人接收有关“任务”的数据,这些任务是在机器人内部编程的,我想通过名称和GUID访问和排序,而不需要其他不需要的信息。 我想我在用一本词典,但我对词典一点也不熟悉。以下是我正在接收的一段数据,需要整理:

{u'guid': u'01b735d6-4a8e-11e7-b126-f44d3061db09', u'name': u'Spraying demo'}, {u'guid': u'00d5387c-4b7d-11e7-9221-f44d3061db09', u'name': u'REST Mission'}, {u'guid': u'f47be478-4c28-11e7-b184-f44d3061db09', u'name': u'Am or demo'}, {u'guid': u'e1af13ba-4f38-11e7-9626-f44d3061db09', u'name': u'Demo - Tech Center'}

我想拿出所有的项目是guid的或名称。如果可能的话,我的目标是将它们放在单独的列表中(比如guid列表和名称列表)

这是我的代码试图处理这个问题(我很抱歉,它可能是草率的):

demo = 'e1af13ba-4f38-11e7-9626-f44d3061db09'

def compMissionQueue():
    getMissionQueue = robot.get_mission_queue()[1][0]
    missionID = getMissionQueue['id']
    missionGUID = robot.get_mission_GUID_from_queue(missionID)[1]['mission_id']
    if missionGUID != mission:
        print('Adding mission to queue')

    else:
        print('Mission already in queue. Add again? Y or N')  

def loadMission():          #Loads mission to robot queue and continues robot operation
        runDemo = robot.load_mission(demo)
        #robot.continue_robot()
        #robot.pause_robot()
        #robot.delete_from_mission_queue(demo)
        global mission
        mission = demo

def cycleMissions():        #Cycles through mission names and GUID's
    getAllMissions()
    #while True:
        #getMissions += 1


def getAllMissions():       #Returns list of all missions in robot
    getMissions = robot.get_missions()[1][5]['guid']
    print(getMissions)

def techDemo():
    compMissionQueue()
    #loadMission()
    #print(mission)

我试图找到解决办法,我看到很多人都在做这样的事情

for k in dict: print (k)

但这并不是我想做的。我将数据作为名为getMissions的变量导入。我可以通过缩小它的范围来提取单个条目,就像一个带括号的元组一样,但是字典中的条目数会发生变化,所以每次添加新条目时,我都必须不断更新代码。如果你有什么建议,我将不胜感激。谢谢


Tags: 数据代码name名称queuedemodef机器人
1条回答
网友
1楼 · 发布于 2024-09-29 19:33:20

您可以使用列表理解来完成此操作:

l = [{u'guid': u'01b735d6-4a8e-11e7-b126-f44d3061db09', u'name': u'Spraying demo'}, {u'guid': u'00d5387c-4b7d-11e7-9221-f44d3061db09', u'name': u'REST Mission'}, {u'guid': u'f47be478-4c28-11e7-b184-f44d3061db09', u'name': u'Am or demo'}, {u'guid': u'e1af13ba-4f38-11e7-9626-f44d3061db09', u'name': u'Demo - Tech Center'}]
names = [d['name'] for d in l]
guids = [d['guid'] for d in l]
print(names)
print(guids)

输出:

['Spraying demo', 'REST Mission', 'Am or demo', 'Demo - Tech Center']
['01b735d6-4a8e-11e7-b126-f44d3061db09', '00d5387c-4b7d-11e7-9221-f44d3061db09', 'f47be478-4c28-11e7-b184-f44d3061db09', 'e1af13ba-4f38-11e7-9626-f44d3061db09']

说明:

[d['name'] for d in l]将遍历字典列表,并构建具有键'name'的字典值列表

相关问题 更多 >

    热门问题