[英]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.