Python 2,7 Словник Поради

Я часто не використовую словникові об'єкти в Python. Я працював над сценарієм, який вимагає, щоб я використовував словник для зберігання динамічно створюваної інформації, що складається зі списку. Як я можу додати значення до списку значень, що належать одному ключовому словнику в Python? Чи це можливо? Я сподіваюсь, що зможу створити таку інформацію, з якої я міг би потягнути пізніше ...

dict = {'PhysicalDrive0': '0', '1', '2', 'PhysicalDrive1': '0', '1'};
dict[PhysicalDrive0].append(3)
dict[PhysicalDrive1].append(2)
print dict[PhysicalDrive0]
<0, 1, 2, 3>
print dict[PhysicalDrive1]
<0, 1, 2>

Дякую!

0
Дякую за відповіді всім! Кожна відповідь була актуальною та корисною. Я вибрав синтаксичний підручник, найбільш відповідний моєму скрипту/випуску. Ще раз спасибі.
додано Автор 0xhughes, джерело

6 Відповіді

Використовуйте список як значення, список дозволить вам додати нові елементи:

>>> dic = {'PhysicalDrive0': ['0', '1', '2'], 'PhysicalDrive1': ['0', '1']}
>>> dic['PhysicalDrive0'].append('3')
>>> dic['PhysicalDrive1'].append('2')
>>> dic
{'PhysicalDrive1': ['0', '1', '2'], 'PhysicalDrive0': ['0', '1', '2', '3']}

Щоб додати значення до відсутньої клавіші, ви можете використовувати dict.setdefault , якщо ключ вже присутній, він додасть значення до вже наявного списку, інакше створює ключ з порожним списком, а потім додає значення до нього.

Демо:

#creates a new key PhysicalDrive3' and appends a value to it.
>>> dic.setdefault('PhysicalDrive3', []).append('3')
>>> dic
{'PhysicalDrive1': ['0', '1', '2'], 'PhysicalDrive0': ['0', '1', '2', '3'], 'PhysicalDrive3': ['3']}

>>> dic.setdefault('PhysicalDrive1', []).append('5')
>>> dic
{'PhysicalDrive1': ['0', '1', 2, '5'], 'PhysicalDrive0': ['0', '1', '2', 3], 'PhysicalDrive3': [3]}
3
додано
@Stephan чомусь спільнота відхиляє ваші зміни.
додано Автор Ashwini Chaudhary, джерело

Ви повинні дивитися на collections.defaultdict , якщо ви не можете просто зберегти значення як буквений список ...:

from collections import defaultdict

dd = defaultdict(list)    
dd['Drive1'].append(3)
dd['Drive2'].append(6)
dd['Drive1'].append(2)

# defaultdict(, {'Drive2': [6], 'Drive1': [3, 2]})
3
додано

Your syntax is invalid, the value half of your key-value needs to be a single item, it can be a list, however so you could say 'PhysicalDrive0':['0','1','2']

You would then append to that key-value pair in the dictionary by saying dict['PhysicalDrive0'].append('3')

1
додано

Your syntax is invalid, the value half of your key-value needs to be a single item, it can be a list, however so you could say 'PhysicalDrive0':['0','1','2']

You would then append to that key-value pair in the dictionary by saying dict['PhysicalDrive0'].append('3')

1
додано
dict = {'PhysicalDrive0': ['0', '1', '2'], 'PhysicalDrive1': ['0', '1']}

Це має працювати, як зазначено. Значення, збережене в словнику, - це список, який ви можете обробляти як звичайно.

Це, звичайно, означає, що ви можете отримати доступ до елементів списку як:

dict['PhysicalDrive0'][0]

тощо.

1
додано
dict = {'PhysicalDrive0': ['0', '1', '2'], 'PhysicalDrive1': ['0', '1']}

Це має працювати, як зазначено. Значення, збережене в словнику, - це список, який ви можете обробляти як звичайно.

Це, звичайно, означає, що ви можете отримати доступ до елементів списку як:

dict['PhysicalDrive0'][0]

тощо.

1
додано
ІТ КПІ - Python
ІТ КПІ - Python
625 учасників

Канал обговорень про всякі штуки зі світу пайтону. Прохання: 0. мати повагу одне до одного; 1. не матюкатися в сторону людей; 2. не захламляти тред повідомленнями по одному слову;