如何根据输入指定的重复次数生成对应键值对字典?
按指定重复次数将keys与values列表组合为字典
问题描述
给定两个列表:
keys = ['user1', 'user2', 'usr3', 'usr4', 'usr5', 'usr6']values = ['apple', 'banana', 'white', 'black', 'red', 'red2', 'red3']
需要实现一个功能:根据输入的重复次数,让每个value对应指定数量的key,生成目标字典。例如:
- 当重复次数为2时,生成:
{'user1': 'apple', 'user2': 'apple', 'usr3': 'banana', 'usr4': 'banana', 'usr5':'white', 'usr6': 'white'} - 当重复次数为3时,生成:
{'user1': 'apple', 'user2': 'apple', 'usr3': 'apple', 'usr4': 'banana', 'usr5':'banana', 'usr6': 'banana'}
解决方案
可以通过以下Python函数实现该功能,逻辑清晰且具备鲁棒性(能处理keys长度不是重复次数整数倍、values数量不足的情况):
def create_key_value_dict(keys, values, repeat_count): # 计算需要用到的value数量,避免超出values列表的长度 required_values = min(len(keys) // repeat_count, len(values)) # 生成每个value重复指定次数的序列 extended_values = [] for val in values[:required_values]: extended_values += [val] * repeat_count # 截断序列以匹配keys的长度(处理非整数倍的情况) extended_values = extended_values[:len(keys)] # 配对keys和处理后的values,返回字典 return dict(zip(keys, extended_values)) # 测试示例 keys = ['user1', 'user2', 'usr3', 'usr4', 'usr5', 'usr6'] values = ['apple', 'banana', 'white', 'black', 'red', 'red2', 'red3'] # 测试重复次数为2的场景 print(create_key_value_dict(keys, values, 2)) # 输出: {'user1': 'apple', 'user2': 'apple', 'usr3': 'banana', 'usr4': 'banana', 'usr5': 'white', 'usr6': 'white'} # 测试重复次数为3的场景 print(create_key_value_dict(keys, values, 3)) # 输出: {'user1': 'apple', 'user2': 'apple', 'usr3': 'apple', 'usr4': 'banana', 'usr5': 'banana', 'usr6': 'banana'}
代码说明
- 计算所需value数量:用
min(len(keys)//repeat_count, len(values))确保不会使用超出values列表范围的元素,避免索引错误。 - 生成重复value序列:遍历选中的
value,每个重复repeat_count次后加入序列。 - 匹配keys长度:如果
keys的总长度不是repeat_count的整数倍,截断序列以保证和keys长度一致。 - 生成字典:通过
zip()将keys和处理后的values配对,再转换为字典。
内容的提问来源于stack exchange,提问作者Siya
相关产品推荐
相关产品推荐

