3 回答
TA贡献1784条经验 获得超9个赞
寻找所需的关键字
检查更高版本
必要时删除项目
伪代码:
for item in list:
if dictContainsKeyword(item, "hotfix") or dictContainsKeyword(item, "tag"):
if listContainsNewerVersion(list, item):
removeDictFromList(list, item)
对于 dictContainsKeyword、listContainsNewerVersion 和 removeDictFromList,您需要选择具有唯一值的字典属性。或者使用一组属性来识别单个字典。
在 listContainsNewerVersion 中,您可以遍历列表并将字典与给定的字典进行比较。
编辑:更改为 for each loop 以避免列表迭代和删除对象的问题。
TA贡献1798条经验 获得超3个赞
您可以尝试以下方法,虽然效率不高,但可以解决您的问题
>>> list1 = [i for i in list if 'tag' not in i['fullDisplayName']]
>>> list2 = [i for i in list if 'tag' in i['fullDisplayName']]
>>> from operator import itemgetter
>>> newlist = sorted(list2, key=itemgetter('displayName'), reverse=True)
>>> list1.append(newlist[0])
TA贡献1856条经验 获得超5个赞
做这样的事情:
new_list = []
append_last = (0, None)
for index, obj in enumerate(list):
if 'hotfix' in obj['fullDisplayName'] or 'tag' in obj['fullDisplayName']:
number = int("tag/1.0.1".split('/')[1].replace('.',''))
append_last = (number, index) if append_last[0] < number else append_last
else:
new_list.append(obj)
if append_last[1]:
new_list.append(list[append_last[1]])
print new_list
添加回答
举报