<p>您可以使用itertools和列表理解</p>
<pre><code>import itertools
data = {'dev1': {'beacons':
[{'mac_address': '11:22:33:44:55:66', 'rssi': 5},
{'mac_address': 'ab:bc:cd:de:ef', 'rssi': 22}],
'mac_addr': '43:34:23:66:11:aa'},
'dev2': {'beacons':
[{'mac_address': '11:22:33:44:55:66', 'rssi': 15},
{'mac_address': 'ab:bc:cd:de:ef', 'rssi': 33}],
'mac_addr': '32:32:54:12:dd:ff'},
'dev3': {'beacons':
[{'mac_address': '11:22:33:44:55:66', 'rssi': 30},
{'mac_address': 'ab:bc:cd:de:ef', 'rssi': 44}],
'mac_addr': '43:fs:43:ha:bb:11'}}
# flatten the list into
# [{'rssi':... , 'mac_address': ...},
# {'rssi': ..., ... ]
flattened = [datum for datum in dev['beacons']
for dev in data.values()]
result = [
{'rssi': rssi,
'mac_address' : [record['mac_address'] for record in records] }
for rssi, records in itertools.groupby(
flattened, lambda datum: datum['rssi'])
]
</code></pre>