Python Forum
Reference new dictionary keys with a variable
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Reference new dictionary keys with a variable
#1
I want to read text files with parameters and assignments in order to configure a new device.
It seemed correct to read variables and their assignments into a dictionary from a text file.
But I have hit a snag in that I cannot work out how to read variables directly into a dictionary.
I have stripped down my script to the following to try and illustrate this.

Grateful for any replies..

# $language = "python"
# $interface = "1.0"
#
import time
import datetime
import sys

#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# This is how I want me dictionary to look after 
# assignment from reading a text file
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Dict_Param = {
"<IP_ADDRESS>": "10.10.10.10",
"<PREFIXLENGTH>": "24",
"<HOSTNAME>": "blahblah"
}


Dict_Param = {}

#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# Variables and their assignments are read from 
# a text file into 2 lists as shown
# I have this working just stripped out for simplicity
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
KeyStr = ["<IP_ADDRESS>","<PREFIXLENGTH>","<HOSTNAME>"]
AssignStr = ["10.10.10.10", "24", "blahblah"]

#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# This does not work
# But I hope it illustrates what I am trying 
# and failing to do
# That is add the pairs defined in the 2 lists above
# as key entries in my dictionary
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Dict_Param['KeyStr[0]'] = AssignStr[0]
Dict_Param['KeyStr[1]'] = AssignStr[1]
Dict_Param['KeyStr[2]'] = AssignStr[2]

print Dict_Param
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Reply
#2
(May-06-2019, 07:17 PM)slouw Wrote:
Dict_Param['KeyStr[0]'] = AssignStr[0]
Dict_Param['KeyStr[1]'] = AssignStr[1]
Dict_Param['KeyStr[2]'] = AssignStr[2]

Remove the quotes, and that would work as you expect.

Or, you can do it the easy way and use a loop:
for index in range(len(KeyStr)):
    if index < len(AssignStr):
        key = KeyStr[index]
        val = AssignStr[index]
        Dict_Param[key] = val
Reply
#3
keys = ["<IP_ADDRESS>","<PREFIXLENGTH>","<HOSTNAME>"]
values = ["10.10.10.10", "24", "blahblah"]
dict_params = dict(zip(keys, values))
but it's interesting how you end up with two lists by reading from a text file - you can read from file line by line and directly assign value to key in the dict. I don't give example, because it's not clear how the file looks like
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#4
You can use zip to pair up the key and value in a for loop
dict_param = {}

keystr = ["<IP_ADDRESS>","<PREFIXLENGTH>","<HOSTNAME>"]
assignstr = ["10.10.10.10", "24", "blahblah"]

for key, value in zip(keystr, assignstr):
    dict_param[key] = value
    
print(dict_param)
Output:
{'<IP_ADDRESS>': '10.10.10.10', '<PREFIXLENGTH>': '24', '<HOSTNAME>': 'blahblah'}
Reply
#5
OMG what wonderful answers!
Thank you all!!! Stupendous! Amazing! Thank you all!!!
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Variable Substitution call keys Bobbee 15 2,568 Aug-28-2024, 01:52 PM
Last Post: Bobbee
  can Inner Class reference the Outer Class's static variable? raykuan 6 8,865 Jul-01-2022, 06:34 AM
Last Post: SharonDutton
  How to define a variable in Python that points to or is a reference to a list member JeffDelmas 4 3,632 Feb-28-2021, 10:38 PM
Last Post: JeffDelmas
  Adding keys and values to a dictionary giladal 3 3,381 Nov-19-2020, 04:58 PM
Last Post: deanhystad
  Pass by object reference when does it behave like pass by value or reference? mczarnek 2 3,369 Sep-07-2020, 08:02 AM
Last Post: perfringo
  access dictionary with keys from another and write values to list redminote4dd 6 4,480 Jun-03-2020, 05:20 PM
Last Post: DeaD_EyE
  Drop Keys From Dictionary donnertrud 8 5,197 May-30-2020, 11:39 AM
Last Post: DeaD_EyE
  variable as dictionary name? diazepam 4 15,012 Apr-27-2020, 08:11 AM
Last Post: deanhystad
  Problem adding keys/values to dictionary where keynames = "property" and "value" jasonashaw 1 2,633 Dec-17-2019, 08:00 PM
Last Post: jasonashaw
  Checking if the combination of two keys is in a dictionary? mrsenorchuck 6 5,209 Dec-04-2019, 10:35 AM
Last Post: mrsenorchuck

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020