Как добавить из словаря списка в список конкретные значения словаря

x = [{
    'f': 'a',
    'n': 'b',
    'r': 'c'
     },

    {
    'f': 'b',
    'n': 'c',
    'r': 'a'
     },

    {
    'f': 'b',
    'n': 'b',
    'r': 'a'
     }

]

m = []


def name2():
    h = 0
    for i in x:
        if x[h]['n'] != x[h+1]['n']:
            x[h]['n'].append(m)
        h += 1
name2()
print(m)

я не могу добавить с помощью функции append можете сказать каким образом это можно сделать


Ответы (3 шт):

Автор решения: Dmitry

У словаря нет метода append. Запись можно сделать так

x[h]['n'] = m

Пример на данных:

x = [{'f': 'n', 'n': 'b', 'r': 'c'}, {'f': 'b', 'n': 'c', 'r': 'a'}, {'f': 'b', 'n': 'b', 'r': 'a'}]

# что лежит в нулевом x
print(x[0], type(x[0])) 

# вывод
# {'f': 'n', 'n': 'b', 'r': 'c'} <class 'dict'>

# заменим какое нибудь значение, например по ключю f
x[0]["f"] = 10

# что теперь хранится в нулевом x
print(x[0], type(x[0])) 

# вывод
# {'f': 10, 'n': 'b', 'r': 'c'} <class 'dict'>

Обращайте внимание на тот тип данных с которыми работаете. А методы всегда можно глянуть в оф документации.
Не стесняйтесь выводить необходимую информацию в консоль, так будет легче понимать, что происходит

→ Ссылка
Автор решения: GrAnd

Если задача состоит в том, чтобы сформировать список содержащий уникальные значения элементов 'n' каждого словаря списка x, то вот:

m = list(set((el['n'] for el in x)))
→ Ссылка
Автор решения: SergFSM

немного поправил ваш код, теперь он работает (вы это задумывали?):

def name2():
    h = 0
    for i in range(len(x)-1):
        if x[h]['n'] != x[h+1]['n']:
            m.append(x[h]['n'])
        h += 1
name2()
print(m)  # ['b', 'c']
→ Ссылка