-1
myDict = {'Name': ['Daniel', 'Melissa', 'Vicky', 'Winona'],
         'Tribe': ['Bataknese', 'Javanese', 'Bataknese', 'Javanese'],
         'Town': ['Indramayu', 'Jakarta', 'Jakarta', 'Batam'],
         'Username': ['dan.iel', 'melissaaaa', 'vic.ky', 'weenonuhh']}

myList = [['Daniel', 'Bataknese', 'Indramayu', 'dan.iel'],
         ['Melissa', 'Javanese', 'Jakarta', 'melissaaaa'],
         ['Vicky', 'Bataknese', 'Jakarta', 'vic.ky'],
         ['Winona', 'Javanese', 'Batam', 'weenonuhh']]

How to make function to add/append more values to the dictionary and the list?

def add(something):
    ....

 add('Clara Angela;;;Balinese;;;Bali;;;clara123')

Then, myDict and my List should be like this:

myDict = {'Name': ['Daniel', 'Melissa', 'Vicky', 'Winona','Clara Angela'],
         'Tribe': ['Bataknese', 'Javanese', 'Bataknese', 'Javanese','Balinese'],
         'Town': ['Indramayu', 'Jakarta', 'Jakarta', 'Batam','Bali'],
         'Username': ['dan.iel', 'melissaaaa', 'vic.ky', 'weenonuhh','clara123']}

myList = [['Daniel', 'Bataknese', 'Indramayu', 'dan.iel'],
         ['Melissa', 'Javanese', 'Jakarta', 'melissaaaa'],
         ['Vicky', 'Bataknese', 'Jakarta', 'vic.ky'],
         ['Winona', 'Javanese', 'Batam', 'weenonuhh'],
         ['Clara Angela', 'Balinese', 'Bali', 'clara123']]
wiwiz
  • 1
  • 2
  • 2
    Please show us what you have done so far. We are supposed to help you, not to do assignments for you. – Hamza Hathoute Nov 14 '19 at 12:30
  • You should strongly consider changing your data structure. As it stands, your code needs to keep track of indexes in `myDict` values. Why not simply have a list of dicts? `[{'name': 'Daniel', 'Tribe': 'Bataknese, ...}, {'name': 'Melissa', 'Tribe': 'Javanese', ...}, {'name': 'Vicky', 'Tribe': 'Bataknese', ...}, ...]`. Then everything becomes much more trivial – DeepSpace Nov 14 '19 at 12:31
  • This might help https://stackoverflow.com/questions/5378231/list-to-dictionary-conversion-with-multiple-values-per-key – Paul Nov 14 '19 at 12:33

3 Answers3

1

Assuming order is correct; use str.split and append that to myList, then just loop over myDict.values() appending each value (zip will be handy for this):

def add(data):
    data = data.split(';;;')
    myList.append(data)
    for l, v in zip(myDict.values(), data):
        l.append(v)

add('Clara Angela;;;Balinese;;;Bali;;;clara123')

Results:

myDict

{'Name': ['Daniel', 'Melissa', 'Vicky', 'Winona', 'Clara Angela'],
 'Town': ['Indramayu', 'Jakarta', 'Jakarta', 'Batam', 'Bali'],
 'Tribe': ['Bataknese', 'Javanese', 'Bataknese', 'Javanese', 'Balinese'],
 'Username': ['dan.iel', 'melissaaaa', 'vic.ky', 'weenonuhh', 'clara123']}

myList

[['Daniel', 'Bataknese', 'Indramayu', 'dan.iel'],
 ['Melissa', 'Javanese', 'Jakarta', 'melissaaaa'],
 ['Vicky', 'Bataknese', 'Jakarta', 'vic.ky'],
 ['Winona', 'Javanese', 'Batam', 'weenonuhh'],
 ['Clara Angela', 'Balinese', 'Bali', 'clara123']]

If you're not using Python 3.X where dict's are ordered then operator.itemgetter is your next best thing:

get_lists = itemgetter('Name', 'Tribe', 'Town', 'Username')
for l, v in zip(get_lists(myDict), data):
    ...
Jab
  • 26,853
  • 21
  • 75
  • 114
-1

Here is a code that will do that:

myDict = {'Name': ['Daniel', 'Melissa', 'Vicky', 'Winona'],
         'Tribe': ['Bataknese', 'Javanese', 'Bataknese', 'Javanese'],
         'Town': ['Indramayu', 'Jakarta', 'Jakarta', 'Batam'],
         'Username': ['dan.iel', 'melissaaaa', 'vic.ky', 'weenonuhh']}

def add ( Name, Tribe, Town, Username):
    myDict["Name"].append(Name)
    myDict["Tribe"].append(Tribe)
    myDict["Town"].append(Town)
    myDict["Username"].append(Username)

add("Clara Angela","Balinese","Bali","clara123")

print(myDict)

The output will be:

{'Name': ['Daniel', 'Melissa', 'Vicky', 'Winona', 'Clara Angela'],
 'Tribe': ['Bataknese', 'Javanese', 'Bataknese', 'Javanese', 'Balinese'],
 'Town': ['Indramayu', 'Jakarta', 'Jakarta', 'Batam', 'Bali'],
 'Username': ['dan.iel', 'melissaaaa', 'vic.ky', 'weenonuhh', 'clara123']}

However if the input should be in the way you asked, then modify the code to this:

myDict = {'Name': ['Daniel', 'Melissa', 'Vicky', 'Winona'],
         'Tribe': ['Bataknese', 'Javanese', 'Bataknese', 'Javanese'],
         'Town': ['Indramayu', 'Jakarta', 'Jakarta', 'Batam'],
         'Username': ['dan.iel', 'melissaaaa', 'vic.ky', 'weenonuhh']}
def add (i):
    j=i.split(";;;")
    myDict["Name"].append(j[0])
    myDict["Tribe"].append(j[1])
    myDict["Town"].append(j[2])
    myDict["Username"].append(j[3])
add(i)    
print(myDict)
Sushanth
  • 2,224
  • 13
  • 29
-1

You can do:

    myDict = {'Name': ['Daniel', 'Melissa', 'Vicky', 'Winona'],
             'Tribe': ['Bataknese', 'Javanese', 'Bataknese', 'Javanese'],
             'Town': ['Indramayu', 'Jakarta', 'Jakarta', 'Batam'],
             'Username': ['dan.iel', 'melissaaaa', 'vic.ky', 'weenonuhh']}

    myList = [['Daniel', 'Bataknese', 'Indramayu', 'dan.iel'],
             ['Melissa', 'Javanese', 'Jakarta', 'melissaaaa'],
             ['Vicky', 'Bataknese', 'Jakarta', 'vic.ky'],
             ['Winona', 'Javanese', 'Batam', 'weenonuhh']]

    def add(my_string):
        splitted = my_string.split(';;;')
        myList.append(splitted)
        for i, item in enumerate(['Name', 'Tribe', 'Town', 'Username']):
            myDict[item].append(splitted[i])

    add('Clara Angela;;;Balinese;;;Bali;;;clara123')
Divyesh patel
  • 967
  • 1
  • 6
  • 21
Aryerez
  • 3,417
  • 2
  • 9
  • 17