2017-06-16 58 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'