Найти - Пользователи
Полная версия: Как изменить значение ключа из строки в список
Начало » Python для новичков » Как изменить значение ключа из строки в список
1
Meacronacer
Такая проблема мне нужно было сделать:
Вам доступен список pets, содержащий информацию о собаках и их владельцах. Каждый элемент списка – это кортеж вида (кличка собаки, имя владельца, фамилия владельца, возраст владельца).

Дополните приведенный код так, чтобы в переменной result хранился словарь, в котором для каждого владельца будут перечислены его собаки. Ключом словаря должен быть кортеж (имя, фамилия, возраст владельца), а значением – список кличек собак (сохранив исходный порядок следования).

Примечание 1. Не забывайте: кортежи являются неизменямыми, поэтому могут быть ключами словаря.
Примечание 2. Обратите внимание, что у некоторых владельцев по несколько собак.
Но я не понимаю как значение ключа которая являеться строкой переделать в список, если запустить мой код увидите что у меня все значения ключа являються строкой
Вот мой код:
 pets = [('Hatiko', 'Parker', 'Wilson', 50),
        ('Rusty', 'Josh', 'King', 25),
        ('Fido', 'John', 'Smith', 28),
        ('Butch', 'Jake', 'Smirnoff', 18),
        ('Odi', 'Emma', 'Wright', 18),
        ('Balto', 'Josh', 'King', 25),
        ('Barry', 'Josh', 'King', 25),
        ('Snape', 'Hannah', 'Taylor', 40),
        ('Horry', 'Martha', 'Robinson', 73),
        ('Giro', 'Alex', 'Martinez', 65),
        ('Zooma', 'Simon', 'Nevel', 32),
        ('Lassie', 'Josh', 'King', 25),
        ('Chase', 'Martha', 'Robinson', 73),
        ('Ace', 'Martha', 'Williams', 38),
        ('Rocky', 'Simon', 'Nevel', 32)]
result = {}
for i in pets:
    result.update({i[1:]:i[0]})
for j in pets:
    for k,v in result.items():
        if k == j[1:] and j[0] != v:
            result.update({k:v + ' ' + j[0]})
print(result)
xam1816
 pets = [('Hatiko', 'Parker', 'Wilson', 50),
        ('Rusty', 'Josh', 'King', 25),
        ('Fido', 'John', 'Smith', 28),
        ('Butch', 'Jake', 'Smirnoff', 18),
        ('Odi', 'Emma', 'Wright', 18),
        ('Balto', 'Josh', 'King', 25),
        ('Barry', 'Josh', 'King', 25),
        ('Snape', 'Hannah', 'Taylor', 40),
        ('Horry', 'Martha', 'Robinson', 73),
        ('Giro', 'Alex', 'Martinez', 65),
        ('Zooma', 'Simon', 'Nevel', 32),
        ('Lassie', 'Josh', 'King', 25),
        ('Chase', 'Martha', 'Robinson', 73),
        ('Ace', 'Martha', 'Williams', 38),
        ('Rocky', 'Simon', 'Nevel', 32)]
result = {}
for i in pets:
        if i[1:] in result: # если кортеж есть в словаре
                result[i[1:]].append(i[0])# добавляем к списку значений
        else:# иначе
                result[i[1:]] = [i[0]]# добавляем ключ,список значений
print(result)
py.user.next
Meacronacer
Как изменить значение ключа из строки в список
  
pets = [('Hatiko', 'Parker', 'Wilson', 50),
        ('Rusty', 'Josh', 'King', 25),
        ('Fido', 'John', 'Smith', 28),
        ('Butch', 'Jake', 'Smirnoff', 18),
        ('Odi', 'Emma', 'Wright', 18),
        ('Balto', 'Josh', 'King', 25),
        ('Barry', 'Josh', 'King', 25),
        ('Snape', 'Hannah', 'Taylor', 40),
        ('Horry', 'Martha', 'Robinson', 73),
        ('Giro', 'Alex', 'Martinez', 65),
        ('Zooma', 'Simon', 'Nevel', 32),
        ('Lassie', 'Josh', 'King', 25),
        ('Chase', 'Martha', 'Robinson', 73),
        ('Ace', 'Martha', 'Williams', 38),
        ('Rocky', 'Simon', 'Nevel', 32)]
result = {}
for i in pets:
    result.update({i[1:]:i[0]})
for j in pets:
    for k,v in result.items():
        if k == j[1:] and j[0] != v:
            result.update({k:v + ' ' + j[0]})
print(result)
  
>>> pets = [('Hatiko', 'Parker', 'Wilson', 50),
...         ('Rusty', 'Josh', 'King', 25),
...         ('Fido', 'John', 'Smith', 28),
...         ('Butch', 'Jake', 'Smirnoff', 18),
...         ('Odi', 'Emma', 'Wright', 18),
...         ('Balto', 'Josh', 'King', 25),
...         ('Barry', 'Josh', 'King', 25),
...         ('Snape', 'Hannah', 'Taylor', 40),
...         ('Horry', 'Martha', 'Robinson', 73),
...         ('Giro', 'Alex', 'Martinez', 65),
...         ('Zooma', 'Simon', 'Nevel', 32),
...         ('Lassie', 'Josh', 'King', 25),
...         ('Chase', 'Martha', 'Robinson', 73),
...         ('Ace', 'Martha', 'Williams', 38),
...         ('Rocky', 'Simon', 'Nevel', 32)]
>>> 
>>> result = {}
>>> 
>>> for i in pets:
...     result.update({i[1:]:[]})
... 
>>> for j in pets:
...     for k,v in result.items():
...         if k == j[1:] and j[0] != v:
...             result.update({k:v + [j[0]]})
... 
>>> print(result)
{('Parker', 'Wilson', 50): ['Hatiko'], ('Josh', 'King', 25): ['Rusty', 'Balto', 'Barry', 'Lassie'], ('John', 'Smith', 28): ['Fido'], ('Jake', 'Smirnoff', 18): ['Butch'], ('Emma', 'Wright', 18): ['Odi'], ('Hannah', 'Taylor', 40): ['Snape'], ('Martha', 'Robinson', 73): ['Horry', 'Chase'], ('Alex', 'Martinez', 65): ['Giro'], ('Simon', 'Nevel', 32): ['Zooma', 'Rocky'], ('Martha', 'Williams', 38): ['Ace']}
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB