我想結合使用同一個密鑰的字典列表。我要做的結果是具有唯一「Org_ID」的字典列表。所有「範圍」相同的「Org_ID」將在列表中的單個字典中。這裏是我的原始數據:使用此結合使用同一密鑰的字典列表
new_data = [{'Range': ['192.168.1.1-192.168.1.254','192.168.2.1-192.168.2.254','192.168.3.1-192.168.3.254','10.0.0.1-10.0.0.254'] 'Org_ID': 'TX', 'name': 'TX-Dallas'},
{'Range': ['192.168.9.1-192.168.1.254','10.0.5.1-10.0.5.254'] 'Org_ID': 'CA', 'name': 'CA-San Diego'},
{'Range': ['172.16.0.1-172.16.0.254','172.16.3.1-172.16.3.254'] 'Org_ID': 'TX', 'name': 'TX-Houston'}]
我試圖做到這一點:
d = defaultdict(dict)
for i in (orig_data):
for elem in orig_data:
d[elem['Org_ID']].update(elem)
new_data = d.values()
但隨後 「NEW_DATA」 只包含一個
orig_data = [{'Range': '192.168.1.1-192.168.1.254', 'Org_ID': 'TX', 'name': 'TX-Dallas'},
{'Range': '192.168.2.1-192.168.2.254', 'Org_ID': 'TX', 'name': 'TX-Dallas'},
{'Range': '192.168.3.1-192.168.3.254', 'Org_ID': 'TX', 'name': 'TX-Dallas'},
{'Range': '10.0.0.1-10.0.0.254', 'Org_ID': 'TX', 'name': 'TX-Dallas'},
{'Range': '192.168.9.1-192.168.1.254', 'Org_ID': 'CA', 'name': 'CA-San Diego'},
{'Range': '10.0.5.1-10.0.5.254', 'Org_ID': 'CA', 'name': 'CA-San Diego'},
{'Range': '172.16.0.1-172.16.0.254', 'Org_ID': 'TX', 'name': 'TX-Houston'},
{'Range': '172.16.3.1-172.16.3.254', 'Org_ID': 'TX', 'name': 'TX-Houston'}]
什麼我打算單字典。
我自己也嘗試這種做:
new_data = dict([(k, [orig_data[k]]) for k in orig_data])
但不工作或者。我假設它是因爲它尋找一個單一的字典而不是一系列的字典?
看起來你需要'ipcalc'模塊,以幫助您評估在'dict's'值所使用的那些字符串? –