text: Title: Variables containing mutable values are resolved incorrectly in some cases
  Body: I met a weird problem.  
  robot file `cases.robot` like this
  
  ```
  *** Settings ***
  Test Setup        set os ip
  Library           Collections
  
  *** Variables ***
  &{linux_host1}    mid=12345
  &{linux_host2}    mid=67890
  @{list_a}    ${linux_host1}    ${linux_host2}
  @{host_b}    ${linux_host1}    ${linux_host2}
  
  *** Test Cases ***
  case-a
      FOR    ${j}    IN    @{list_a}
          LOG    ${j}
          LOG    ${j}[os_ip]
      END
  
  case-b
      FOR    ${i}    IN    @{host_b}
          LOG    ${i}
          LOG    ${i}[os_ip]
      END
  
  *** Keywords ***
  set os ip
      Set to Dictionary    ${linux_host1}    os_ip=192.168.1.1
      Set to Dictionary    ${linux_host2}    os_ip=192.168.1.2
      Log    ${linux_host1}
      Log    ${linux_host2}
  ```
  
  run it, case-a passed, but case-b failed.
  
  ```
  $ robot -d /tmp/ cases.robot
  ==============================================================================
  Cases                                                                         
  ==============================================================================
  case-a                                                               | PASS |
  ------------------------------------------------------------------------------
  case-b                                                               | FAIL |
  Dictionary '${i}' has no key 'os_ip'.
  ------------------------------------------------------------------------------
  Cases                                                                 | FAIL |
  2 tests, 1 passed, 1 failed
  ==============================================================================
  Output:  /tmp/output.xml
  Log:     /tmp/log.html
  Report:  /tmp/report.html
  ```
  
  If change the variable `host_b` to `list_b`, both case passed.
  ```
  *** Settings ***
  Test Setup        set os ip
  Library           Collections
  
  *** Variables ***
  &{linux_host1}    mid=12345
  &{linux_host2}    mid=67890
  @{list_a}    ${linux_host1}    ${linux_host2}
  @{list_b}    ${linux_host1}    ${linux_host2}
  
  *** Test Cases ***
  case-a
      FOR    ${j}    IN    @{list_a}
          log    ${j}
          LOG    ${j}[os_ip]
      END
  
  case-b
      FOR    ${i}    IN    @{list_b}
          log    ${i}
          LOG    ${i}[os_ip]
      END
  
  *** Keywords ***
  set os ip
      Set to Dictionary    ${linux_host1}    os_ip=192.168.1.1
      Set to Dictionary    ${linux_host2}    os_ip=192.168.1.2
      Log    ${linux_host1}
      Log    ${linux_host2}
  ```
  
  ```
  ==============================================================================
  Cases                                                                         
  ==============================================================================
  case-a                                                                | PASS |
  ------------------------------------------------------------------------------
  case-b                                                                | PASS |
  ------------------------------------------------------------------------------
  Cases                                                                 | PASS |
  2 tests, 2 passed, 0 failed
  ==============================================================================
  Output:  /tmp/output.xml
  Log:     /tmp/log.html
  Report:  /tmp/report.html
  ```
  
  robotframework version:
  ```
  robotframework                 7.0.1
  robotframework-pythonlibcore   4.4.1
  ```
  python 3.10.12
  os: ubuntu 22.04