Найти - Пользователи
Полная версия: Использование исключительно Comprehension
Начало » Python для новичков » Использование исключительно Comprehension
1
Kustodiev_17
Учусь. Подошло время сдавать задание (горю).

Итого: есть список словарей, в каждом словаре внутри этого списка ключи одинаковые - нужно либо получить один словарь, где величины из разных подсловарей будут объединены, либо любую структуру объединяющую набор пар (ключ, величина) из всех подсловарей.

Закавыка - нужно использовать исключительно (!!) компрехеншн, нельзя map и filter.

Например: Вход:
 [{a: b, c: d}, {a: f, c: e}, {a: g, c: k}]
желательный выход:
 {a: [b, f, g], c: [d, e, k]} 
или
 [(a, b), (c, d), (a, f), (c, d), (a, g), (c, k)]
Rodegast
 >>> from functools import reduce
>>> s = [{"a": "b", "c": "d"}, {"a": "f", "c": "e"}, {"a": "g", "c": "k"}]
>>> { x: [ y[x] for y in s ] for x in reduce(lambda x,y: x|y.keys(), s,set([])) }
{'a': ['b', 'f', 'g'], 'c': ['d', 'e', 'k']}
>>> reduce(lambda x,y: x+list(y.items()), s, [])
[('a', 'b'), ('c', 'd'), ('a', 'f'), ('c', 'e'), ('a', 'g'), ('c', 'k')]
FishHook
    
l = [{'a': 'b', 'c': 'd'}, {'a': 'f', 'c': 'e'}, {'a': 'g', 'c': 'k'}]
res = {}
[[res.setdefault(k, []).append(v) for k, v in x.items()] for x in l]
print(res)
xam1816
 my = [{'a': 'b', 'c': 'd'}, {'a': 'f', 'c': 'e'}, {'a': 'g', 'c': 'k'}]
def f(dict_list):
	temp = []
	for d in dict_list:
		for k,v in d.items():
			temp.append((k,v))
	return temp
convert = f(my)
print(my)
print(convert)

 [{'a': 'b', 'c': 'd'}, {'a': 'f', 'c': 'e'}, {'a': 'g', 'c': 'k'}]
[('a', 'b'), ('c', 'd'), ('a', 'f'), ('c', 'e'), ('a', 'g'), ('c', 'k')]
rami
 old_data = [{'a': 'b', 'c': 'd'}, {'a': 'f', 'c': 'e'}, {'a': 'g', 'c': 'k'}]
 
new_data = [j for i in old_data for j in i.items()]
 
print(new_data)    # [('a', 'b'), ('c', 'd'), ('a', 'f'), ('c', 'e'), ('a', 'g'), ('c', 'k')]
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB