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