All the list getting appended of a dict if you are updating only first element list of dict

Radhey Parashar radha.parashar at ipinfusion.com
Wed Nov 15 04:09:11 EST 2017


Hi python ,



I am facing 1 issue with python related to append command in a list

I am attaching PDB code for more understanding:-



*I am having two classes :- *

*class CITY:*

*    num = 0*

*    connectivity = []*

*class CON:*

*     name = 0*

*     type = 0*







(Pdb) p cities

{1: <__main__.CITY instance at 0x7f9c00e03638>, 2: <__main__.CITY instance
at 0x7f9c00e03680>, 3: <__main__.CITY instance at 0x7f9c00e03950>, 4:
<__main__.CITY instance at 0x7f9c00e03998>, 5: <__main__.CITY instance at
0x7f9c00e039e0>}

(Pdb)











> /home/radhey/python/code.py(16)func()

-> list = []

(Pdb) p data

['1', '2', '3']

* (Pdb) p cities[int(data[0])].connectivity   ----------------**à Here
cities name dictionary are having city class object and each object
connectivity list is empty *

*[]*

*(Pdb) p cities[int(data[1])].connectivity*

*[]*

*(Pdb) p cities[int(data[2])].connectivity*

*[]*

(Pdb) p cities[int(data[3])].connectivity

*** IndexError: IndexError('list index out of range',)

(Pdb) n

> /home/radhey/python/code.py(17)func()

-> list = cities[int(data[0])].connectivity

(Pdb)

> /home/radhey/python/code.py(18)func()

-> list.append(con)

(Pdb)

> /home/radhey/python/code.py(19)func()

-> cities[int(data[0])].connectivity = []

(Pdb)

> /home/radhey/python/code.py(20)func()

-> *cities[int(data[0])].connectivity.extend(list)  -------------**à Here I
extended the connectivity list for cities[1] object *

(Pdb)

> /home/radhey/python/code.py(21)func()

-> con1 = CON

(Pdb) p cities[int(data[1])].connectivity                 --------à BUT All
the *connectivity list got updated *

[<class __main__.CON at 0x7f9bffc178d8>]

(Pdb) p cities[int(data[0])].connectivity

[<class __main__.CON at 0x7f9bffc178d8>]

(Pdb) p int(data[1])

2

(Pdb) p int(data[0])

1

(Pdb)















Code.py :-





root at OcNOS:/home/radhey/python# cat code.py





class CITY:

    num = 0

    connectivity = []

class CON:

    name = 0

     type = 0



def func(cities):

   input = raw_input()

   con = ''

   con1 = ''

   data = input.strip().split(' ')

   con = CON

   con.name = int(data[1])

   con.type = int(data[2])

   list = []

   list = cities[int(data[0])].connectivity

   list.append(con)

   cities[int(data[0])].connectivity = []

   cities[int(data[0])].connectivity.extend(list)

   con1 = CON

   con1.name = int(data[0])

   con1.type = int(data[2])

   list = []

   list = cities[int(data[1])].connectivity

   list.append(con1)

   cities[int(data[1])].connectivity = []

   cities[int(data[1])].connectivity.extend(list)



input = raw_input()

city = int(input.split(' ')[0])

roads = int(input.split(' ')[1])

cities = {}

for c in range(1,city+1):

  city = CITY()

  city.num = c

  cities[c] = city



print city,roads

for r in range(1,roads+1):

   func(cities)



print cities









Input :-



5 7

1 2 3

2 3 3

3 4 3

5 3 2

5 4 1

5 2 2

1 5 1





Thanks

~Radhey

-- 
.



More information about the Python-list mailing list