Ich habe eine Liste der Folowing Form:Liste der Wörterbuch-Manipulation in Python
oldlist = [{'x': 1, 'y':2},{'x':2, 'y':2},{'x':1, 'y':3},{'x':1, 'y':2},{'x':3, 'y':4}]
in
final = [{'x':1,'y':[2,3,2],'count':3},{'x':2,'y':[2],'count':1},{'x':3,'y':[4],'count':1}]
umgewandelt werden Ich habe
versuchtoldlist = [{'x': {'a':1,'b':2}, 'y':2},{'x':{'a':6,'b':7}, 'y':2},{'x':{'a':1,'b':2}, 'y':3},{'x':{'a':1,'b':2}, 'y':2},{'x':{'a':10,'b':11}, 'y':4}]
list1=[]
list2=[]
list3=[]
s = set([d['x'] for d in oldlist])
news=list(s)
for item in oldlist:
if item['x'] == news[0]:
list1.append(item['y'])
if item['x'] == news[1]:
list2.append(item['y'])
if item['x'] == news[2]:
list3.append(item['y'])
final=[]
dic1 = {'x':news[0],'y':list1,'count':len(list1)}
dic2 = {'x':news[1],'y':list2,'count':len(list2)}
dic3 = {'x':news[2],'y':list3,'count':len(list3)}
final.append(dic1)
final.append(dic2)
final.append(dic3)
print final
gibt es eine einfachere Weg, es zu tun? Plus hier wusste ich, dass x nur drei Werte haben kann, also habe ich drei Variablen list1, list2 und list3 erstellt. Was ist, wenn x mehrere andere Werte haben kann und ich eine ähnliche Liste von Wörterbüchern wie final finden muss? Es sollte auch für Strings funktionieren!
Sie können eine 'list' aus dem' Set' mit 's_list = sortiert (n)' machen. (Oder nur 's_list = Liste (n)' wenn Sie sich nicht darum kümmern, sortiert zu werden.) – leekaiinthesky
@leekaiinthesky Das wird für dieses Beispiel funktionieren, aber nicht für andere, die verschiedene andere Werte von x haben können. – glitterati