1

Тема: додавання елементу по ключу ?

В мене є словник і потрібно перевірити
1.якщо ключ є в словнику то додати значення в список який відповідає цьмоу ключу
2.якщо ключ відсутній то додати ключ і значення.

Основнепитання в чому ?
Як можна додати елемент в список по ключу ?
Просот не виходить коли намагаюсь додати то елемент заміняється на введений.

2

Re: додавання елементу по ключу ?

 from collections import defaultdict
dd=defaultdict(list)
print  dd[11]
> []

dd[11].append(1)

dd[10].append(1)

print dd
> defaultdict(<type 'list'>, {10: [1], 11: [1]})

так підійде?

3 Востаннє редагувалося Blast (02.12.2014 18:18:10)

Re: додавання елементу по ключу ?

Singularity написав:
 from collections import defaultdict
dd=defaultdict(list)
print  dd[11]
> []

dd[11].append(1)

dd[10].append(1)

print dd
> defaultdict(<type 'list'>, {10: [1], 11: [1]})

так підійде?

d = {1:3,4:5,6:7}
dd=defaultdict(d)

   

dd=defaultdict(d)
TypeError: first argument must be callable

4 Востаннє редагувалося Blast (02.12.2014 18:20:58)

Re: додавання елементу по ключу ?

Мушу написати функцію яка приймає словник , ключ і значення.
Якщо ключ в словнику то додати значення в список значень ключа .
якщо ключа нема в словнику то потрібно додати значення по ключ*2
якщо ключ*2 не в словнику то додати ключ*2 і значення в словник .

Так ось намагаюсь додати значення в словник по ключу , при тому що як мінімум одне значення по даному ключу уже існує .

5

Re: додавання елементу по ключу ?

from collections import defaultdict
dd = {1:3,4:5,6:7}
dd=defaultdict(list)
ki = int(input())
val = int(input())


def update_dictionary(d, key, value):
    if ki in dd:
        dd[ki].append(value)
    elif key not in dd.keys():
        key = key*2
        dd[key] = value
        if key not in dd.keys():
            dd.update(key,value) 

    return dd


print (update_dictionary(dd,ki,val))

6

Re: додавання елементу по ключу ?

from collections import defaultdict

dd=defaultdict(list)

d = {1:3,4:5,6:7}

dd.update(d)

print dd
defaultdict(<type 'list'>, {1: 3, 4: 5, 6: 7})

7

Re: додавання елементу по ключу ?

Singularity написав:
from collections import defaultdict

dd=defaultdict(list)

d = {1:3,4:5,6:7}

dd.update(d)

print dd
defaultdict(<type 'list'>, {1: 3, 4: 5, 6: 7})

Ось реалізував , в терміналі все проходить , але тест не здав

Прихований текст
def update_dictionary(d, key, value):
if key in d.keys():
        d[key].append(value)
    elif key not in d.keys():
         key = key*2
         d[key] = value
         if key not in d.keys():
            key = key*2
            d[key].append(value)
         else:
            d[key] = value
    
    return d

Failed test #1. Run time error: Traceback (most recent call last): File "jailed_code", line 20, in <module> update_dictionary(d, key, value) File "jailed_code", line 5, in update_dictionary d[key].append(value) AttributeError: 'int' object has no attribute 'append'

8 Востаннє редагувалося Blast (02.12.2014 18:42:38)

Re: додавання елементу по ключу ?

завданян в оригіналі.

Прихований текст

Напишите функцию update_dictionary(d, key, value), которая принимает на вход словарь d и два числа: key и value.

Если ключ key есть в словаре d, то добавьте значение value в список, который хранится по этому ключу.
Если ключа key нет в словаре, то нужно добавить значение по ключу 2⋅key. Если и ключа 2⋅key нет, то нужно добавить ключ 2⋅key в словарь и сопоставить ему список из переданного элемента [value].

Требуется реализовать только эту функцию, кода вне неё не должно быть.
Функция не должна вызывать внутри себя функции input и print.
# не добавляйте кода вне функции

9

Re: додавання елементу по ключу ?

def update_dictionary(d, key, value):
    if key in d:
        d[key].append(value)
    elif key*2 in d:
        d[key*2].append(value)
    else:
        d[key*2] = [value]
Подякували: Blast1

10

Re: додавання елементу по ключу ?

Не буду створювати тисячі топіків. Тому відпишусь тут .
Завдання просте.
1.Подаєм число скільки буде елементів.
2.Вводимо кількість елеменітв кожен елемент з нового рядку
3.Обробляєм кожен елемент функцією Ф
4.Виводим результат.

Проблема в тому що обмежений час . І як прискорити я не знаю

n = int(input())
s = []
x = []
for a in range (1,n+1):
    n = int(input())
    s.append(n)

for i in s:
    x.append(f(i))

for y in x:
    print (y)

11

Re: додавання елементу по ключу ?

Ось вирішення .
До попереднього коменту.
Якщо в когось є швидший варіант то напишіть будь ласка.

n = int(input())
s = []
x = {}
for a in range (1,n+1):
    n = int(input())
    s.append(n)

for l in s:
    if l in x.keys():
        print (x[l])
    else:
        x[l] = f(l)
        print (x[l])

12

Re: додавання елементу по ключу ?

Blast написав:


Завдання просте.
1.Подаєм число скільки буде елементів.
2.Вводимо кількість елеменітв кожен елемент з нового рядку

?

13

Re: додавання елементу по ключу ?

число 5
1-й елемегт  =
....
....
5-й елемент =

ще прикладж
число 2
1-й елмент
2-й елемент

14 Востаннє редагувалося tiktak (02.12.2014 23:12:45)

Re: додавання елементу по ключу ?

elements = [int(input()) for i in range(int(input()))]

-------------------------------------------------------------------------------------------------------------------

count = int(input('Enter count elements: '))

elements = [int(input('{0}-th element: '.format(i))) for i in range(1, count+1)]

new_elements = [f(e) for e in elements]