Python 3如何按照指定顺序重排列嵌套列表中的元素
问题原因
现有代码的逻辑是先遍历字典的键,再匹配第一个参数x里的元素,值的插入顺序完全跟随字典的键存储顺序,而非x的指定顺序,因此会出现第二个子列表顺序颠倒的问题。
修正后的代码
def make_lists(x,y): b = [] for dic in y: a = [] # 直接按x的顺序遍历取key,保证输出顺序和x完全一致 for key in x: a.append(dic[key]) b.append(a) return b print(make_lists(['Hint', 'Num'], [{'Hint': 'Length 2 Not Required', 'Num' : 8675309}, {'Num': 1, 'Hint' : 'Use 1st param order'}]))
输出结果
[['Length 2 Not Required', 8675309], ['Use 1st param order', 1]]
和预期输出完全匹配。
可选优化
如果存在x中的键不一定出现在y的字典中的场景,可以把取值逻辑换成dic.get(key, None),避免抛出KeyError,可根据业务需求替换缺省值。
内容的提问来源于stack exchange,提问作者UnD3rT4keR
相关产品推荐
相关产品推荐

