2017-06-16 68 views
0

我正在使用一件机器人设备(通过休息协议访问自行驾驶机器人车)开展项目。该代码从机器人接收有关'任务'的数据,这些数据在我想访问的机器人中编程,并按名称和GUID进行排序,而不需要其他不需要的信息。 我认为我正在处理一个项目的字典,但我对字典根本不熟悉。这里是我接收并需要分类的一部分数据:循环字典以提取2个值

{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的变量导入。我可以通过使用括号将其缩小为一个元组来缩小它,但字典中项目的数量会发生变化,因此每次添加新项目时都必须不断更新代码。如果您有任何建议,将不胜感激。谢谢!

+0

请修改您的帖子以包含您迄今为止编写的代码。 –

回答

1

你可以用列表理解这样做:

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'