Python中按指定列表位置对齐字典值的实现需求
解决Python字典列表对齐填充问题
需求说明
需要将字典中每个键对应的列表,按照指定的my_list元素顺序对齐:每个位置上如果当前列表存在my_list对应元素则保留,否则用'-'填充。已知字典中所有元素均存在于my_list中。
示例输入
my_list = ['a', 'b', 'c', 'd'] d = {'x':['a', 'b', 'd'], 'y':['a', 'c'], 'z': ['d', 'b']}
期望输出
{'x':['a', 'b', '-', 'd'], 'y':['a', '-', 'c', '-'], 'z':['-', 'b', '-', 'd']}
解决方案
直接通过元素集合查找+列表推导式实现,兼顾可读性和效率:
my_list = ['a', 'b', 'c', 'd'] d = {'x':['a', 'b', 'd'], 'y':['a', 'c'], 'z': ['d', 'b']} result = {} for key, values in d.items(): value_set = set(values) # 按my_list顺序生成对齐后的列表 aligned_values = [val if val in value_set else '-' for val in my_list] result[key] = aligned_values print(result)
代码说明
- 将每个键对应的列表转为集合
value_set,把元素存在性判断的时间复杂度从O(n)优化到O(1),处理大规模数据时性能更优。 - 使用列表推导式遍历
my_list的每个元素,快速生成对齐后的列表,代码简洁直观。
内容的提问来源于stack exchange,提问作者JamesHunt
相关产品推荐
相关产品推荐

