Пет малки функции
- Краен срок:
- 23.03.2015 17:00
- Точки:
- 10
Срокът за предаване на решения е отминал
Вашата задача е да имплементирате следните пет малки функции.
extract_type
При подаден архивиран текст под формата на списък от типа [(<символ[и]>, <брой
повторения>), ...]
, да върне само символите от подаден тип като втори аргумент.
>>> print(extract_type([('f', 1), (5, 10), ('i', 1), (0.3, 100),
('z', 2), ('bu', 1), ('z', 2)], str))
'fizzbuzz'
reversed_dict
Приема речник и връща речник, като за всяка двойка (ключ, стойност) от оригиналния речник в резултатния речник трябва да присъства двойка (стойност, ключ). Ако в оригиналния речник има две равни стойности, сте свободни в резултата да игнорирате всички освен една.
>>> print(reversed_dict({
"Israel": "Jerusalem",
"Austria": "Vienna",
"Palestine": "Jerusalem",
"Sweden": "Stockholm"
}))
{'Jerusalem': 'Israel', 'Stockholm': 'Sweden', 'Vienna': 'Austria'}
Забележка: Допускате, че всяка стойност в подадения речник е hashable
flatten_dict
Приема речник и връща речник, като за всяка двойка (<ключ>, <стойност>
), ако
стойността е речник (<ключ'>, <стойност'>
), в резултата се добавя нов ключ от типа
<ключ>.<ключ'>
със стойност <стойност'>
.
Тоест при подаден следния речник като аргумент:
{
'a': 1,
'c': {
'a': 2,
'b': {
'x': 5,
'y' : 10,
}
},
'd': [1, 2, 3],
}
се очаква следния резултат:
{
'a': 1,
'c.a': 2,
'c.b.x': 5,
'c.b.y': 10,
'd': [1, 2, 3],
}
Забележка: Допускате, че всеки ключ в речник е от тип str
.
unflatten_dict
Имплементира противоположното действие на flatten_dict
. Т.е. при подаден
речник като аргумент:
{
'a': 1,
'c.a': 2,
'c.b.x': 5,
'c.b.y': 10,
'd': [1, 2, 3],
}
се очаква следния резултат:
{
'a': 1,
'c': {
'a': 2,
'b': {
'x': 5,
'y' : 10,
}
},
'd': [1, 2, 3],
}
reps
Приема списък или кортеж и връща нов кортеж, в който всички елементи, които НЕ се повтарят в подадената като аргумент колекция липсват. Повторенията и тяхната поредност на останалите елементи се запазват.
Пример:
>>> reps([1, 4, 2, 6, 7, 2, 4, 11, 1, 9, 0, 2, 5, 3, 1])
(1, 4, 2, 2, 4, 1, 2, 1)