簡體   English   中英

循環瀏覽字典以提取2個值

[英]Cycle Through Dictionary to Pull Out 2 Values

我正在用一個機器人設備(通過其余協議訪問的自駕駛機器人手推車)進行一個項目。 該代碼從機器人接收有關機器人中編程的“任務”的數據,我希望通過名稱和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的變量導入。 我可以通過將其縮小到像帶括號的元組那樣來拉出單個項目,但是字典中的項目數會發生變化,因此每次添加新項目時,我都必須不斷更新代碼。 如果您有任何建議,將不勝感激。 謝謝!

您可以通過列表理解來做到這一點:

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'的字典值列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM