Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
issue in using dictionary
#1
i have dictionary type, below is output when i read dataframe using json.loads (spark)
{'name':'ename','data':'str','len':'2','add':'bgl','out':'y','zip':'3567','add/blr':'Y'}
but i need output like below.
{'ename':{'data':'str','len':'2','add':'bgl','out':'y','zip':'3567','add/blr':'Y'}

the first element which is name not printed instead value of the name as( ename) should print as fieldkey and i have 20 rows in my file. for each row should print like this .. every row has different value for the name (key)


kindly suggest how can i achieve this through dictionary .
Reply
#2
Hello amar,

you can do it like this:

lines = [
    {'name':'ename','data':'str','len':'2','add':'bgl','out':'y','zip':'3567','add/blr':'Y'},
    {'name':'another_name','data':'str','len':'2','add':'bgl','out':'y','zip':'3567','add/blr':'Y'}
]

result = {}

for line in lines:
    # extract the name from the line
    name = line["name"]
    # delete the name from the line
    del (line["name"])
    # make the record in result
    result[name] = line

print(result)
Reply
#3
(Nov-23-2018, 02:22 PM)ODIS Wrote: Hello amar,

you can do it like this:

lines = [
    {'name':'ename','data':'str','len':'2','add':'bgl','out':'y','zip':'3567','add/blr':'Y'},
    {'name':'another_name','data':'str','len':'2','add':'bgl','out':'y','zip':'3567','add/blr':'Y'}
]

result = {}

for line in lines:
    # extract the name from the line
    name = line["name"]
    # delete the name from the line
    del (line["name"])
    # make the record in result
    result[name] = line

print(result)

Hi,

DO i need to convert dict to list again like below, coz there are many rows .. coz im reading csv to df and doing json.loads to get dict

lines = [
{'name':'ename','data':'str','len':'2','add':'bgl','out':'y','zip':'3567','add/blr':'Y'},
{'name':'another_name','data':'str','len':'2','add':'bgl','out':'y','zip':'3567','add/blr':'Y'}
]
Reply
#4
If you want it that way, you can just create a new dict and append it to the list:

result = []
for line in lines:
    name = line['name']
    del line['name']
    result.append({name: line}]
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
Reply
#5
getting error "string indices must be integers for the above code
Reply
#6
Can you post your current code including the file lines processing?
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Issue accessing data from Dictionary/List in the right format LuisSatch 2 2,170 Jul-25-2020, 06:12 AM
Last Post: LuisSatch
  Nested dictionary issue Will86 3 2,911 Apr-16-2019, 11:58 PM
Last Post: Will86

Forum Jump:

User Panel Messages

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