将对象中的相似属性合并为一个属性

Tri*_*eat 0 python

我是python的新手。我有一个问题要问。

b = [{a:"1",b:"6"},{a:"1",b:"89"},{a:"2",b:"16"},{a:"2",b:"99"}]
Run Code Online (Sandbox Code Playgroud)

我想将其转换为:

[{a:"1", b: "6. 89"}, {a:"2", "b": "16. 99"}]
Run Code Online (Sandbox Code Playgroud)

任何的想法?

sma*_*rry 5

# Set up initial data
unmerged = [{"a":"1","b":"6"},{"a":"1","b":"89"},{"a":"2","b":"16"},{"a":"2","b":"99"}]

merged = {}
for entry in unmerged:
    entry_a = entry['a']
    entry_b = entry['b']
    composite_key = entry_a
    if composite_key in merged:
        merged[composite_key]['b'].append(entry_b)
    else:
        merged[composite_key] = {
            'a': entry_a,
            'b': [entry_b]
        }
# reconstruct your list with just your unique entries
cleaned = []
for key, value in merged.items():
    cleaned.append({
        'a': value['a'],
        'b': '.'.join(value['b']) # string join b by ". "
    })
new_list = [ clean for clean in cleaned ]
print(new_list)
Run Code Online (Sandbox Code Playgroud)

输出:

[{'a': '1', 'b': '6.89'}, {'a': '2', 'b': '16.99'}]
Run Code Online (Sandbox Code Playgroud)