Python中如何为字典各键的列表分配唯一值?
问题与解决方案
输入数据
data = {23: ['WA', 'NV', 'AZ', 'OH'], 24: ['NV', 'OH'], 25: ['NV', 'OH']}
期望输出
需要得到每个键对应唯一值的字典:
{23: ['WA'], 24: ['NV'], 25: ['OH']}
当前错误输出
现有get_unique_states函数输出不符合预期:
{23: ['NV', 'AZ', 'WA', 'OH'], 24: ['NV'], 25: ['NV']}
需求说明
- 每个字典键对应一个唯一的州元素
- 若后续键没有未被使用的新元素,需沿用首个键对应的元素
修正后的代码
def get_unique_states(data): # 收集所有不重复的州,按首次出现顺序保存 all_unique_states = [] seen_states = set() for states_list in data.values(): for state in states_list: if state not in seen_states: seen_states.add(state) all_unique_states.append(state) result_dict = {} state_index = 0 # 获取首个键对应的元素,备用 default_state = all_unique_states[0] if all_unique_states else [] for key in data.keys(): if state_index < len(all_unique_states): result_dict[key] = [all_unique_states[state_index]] state_index += 1 else: result_dict[key] = [default_state] return result_dict # 测试验证 data = {23: ['WA', 'NV', 'AZ', 'OH'], 24: ['NV', 'OH'], 25: ['NV', 'OH']} print(get_unique_states(data))
运行上述代码,输出将与期望结果一致:{23: ['WA'], 24: ['NV'], 25: ['OH']}
内容的提问来源于stack exchange,提问作者artiest
相关产品推荐
相关产品推荐

