Потому что в python переменная (грубо говоря) является указателем на область памяти;а словарь является изменяемым объектом - например, вы можете изменить значение в этой ячейке памяти.
Когда вы добавляете его в список, происходит то, что элемент списка становится «этим объектом», который указывает на этот адрес памяти"- не" дамп этого объекта, как новой ячейки памяти ", который вы могли бы подумать.Затем вы изменяете значение словаря - например, значение в адресе памяти.При этом он также изменяется для члена списка - он по-прежнему указывает на тот же адрес памяти, который теперь содержит другое значение.
Если вы хотите, чтобы в списке было 3 разных словаря - используйте3 переменные.
В качестве альтернативы, если вы этого не хотите, сохраните в списке копию словаря;будучи копией, она не изменится, если оригинал:
*** Settings ***
Library Collections
*** Variables ***
&{test_dictionary}
@{positions_list}
*** Test Cases ***
Compaund list
set to dictionary ${test_dictionary} Name=First Name Length=50 db_name=f_name
Append the dictionary to the list
set to dictionary ${test_dictionary} Name=Last Name Length=60 db_name=l_name
Append the dictionary to the list
set to dictionary ${test_dictionary} Name=Email Address Length=40 db_name=email
Append the dictionary to the list
*** Keywords ***
Append the dictionary to the list
&{dict_copy}= Copy Dictionary ${test_dictionary}
log dictionary ${dict_copy}
append to list ${positions_list} ${dict_copy}
log list ${positions_list}