Ich habe Python-Code geschrieben, um Daten vom SQL Server abzurufen, und versuche derzeit, die Daten zusammenzuführen. Ich habe versucht, die Daten in einen Datenrahmen zu ziehen und dann damit zu arbeiten, konnte dies jedoch nicht.
Das aktuelle Formular, in dem ich die Daten eingerichtet habe, lautet wie folgt:
[ { a : { 1 : ( x,y,z,...) }},
{ a : { 2 : ( x,y,z,...) }},
{ a : { 3 : ( x,y,z,...) }} ]
Hier möchte ich hin
[ { a : { 1 : ( x,y,z,...) , 2 : (x,y,...) , 3 : (x,y,z,...) } ]
3 Antworten
Verwenden Sie eine verschachtelte Wörterbuchstruktur über collections.defaultdict
.
Beachten Sie, dass in dieser Implementierung doppelte innere Schlüssel nicht zulässig sind. Sie können beispielsweise nicht zwei Wörterbücher mit dem äußeren Schlüssel 'a' und dem inneren Schlüssel 1 haben. In diesem Fall hat der letzte Vorrang.
from collections import defaultdict
lst = [ { 'a' : { 1 : ( 3, 4, 5 ) }},
{ 'a' : { 2 : ( 6, 7, 8 ) }},
{ 'a' : { 3 : ( 1, 2, 3 ) }},
{ 'c' : { 4 : ( 5, 9, 8 ) }},
{ 'b' : { 1 : ( 6, 6, 8 ) }},
{ 'c' : { 3 : ( 2, 5, 7 ) }}]
d = defaultdict(dict)
for item in lst:
key = next(iter(item))
d[key].update(item[key])
# defaultdict(dict,
# {'a': {1: (3, 4, 5), 2: (6, 7, 8), 3: (1, 2, 3)},
# 'b': {1: (6, 6, 8)},
# 'c': {3: (2, 5, 7), 4: (5, 9, 8)}})
Sie können die Funktion reduce
und dict.update
, um die Daten zu transformieren. Angenommen, 'a'
ist Ihr einziger Schlüssel, können Sie Folgendes tun:
a = [
{'a': {1: (1, 2, 3)}},
{'a': {2: (4, 5, 6)}},
{'a': {3: (7, 8, 9)}}
]
def update(d, c):
d['a'].update(c['a'])
return d
print reduce(update, a, {'a':{}}) #Prints {'a': {1: (1, 2, 3), 2: (4, 5, 6), 3: (7, 8, 9)}}
Wie ist das?
data = [{'a': {1: 4}, 'b': {7: 8}},
{'a': {2: 5}, 'b': {9: 10}},
{'a': {3: 6}}]
all_keys = set().union(*data)
result = {}
for key in all_keys:
result[key] = {}
for d in data:
if key in d:
result[key].update(d[key])
print(result) # {'b': {7: 8, 9: 10}, 'a': {1: 4, 2: 5, 3: 6}}
Verwandte Fragen
Neue Fragen
python
Python ist eine dynamisch typisierte Mehrzweck-Programmiersprache mit mehreren Paradigmen. Es wurde entwickelt, um schnell zu lernen, zu verstehen, zu verwenden und eine saubere und einheitliche Syntax durchzusetzen. Bitte beachten Sie, dass Python 2 ab dem 01.01.2020 offiziell nicht mehr unterstützt wird. Fügen Sie für versionenspezifische Python-Fragen das Tag [python-2.7] oder [python-3.x] hinzu. Wenn Sie eine Python-Variante (z. B. Jython, PyPy) oder eine Bibliothek (z. B. Pandas und NumPy) verwenden, fügen Sie diese bitte in die Tags ein.