Вопрос:

Python читает имена из файла CSV в словарь и добавляет значение 0 для каждого имени

python csv dictionary

53 просмотра

3 ответа

82 Репутация автора

У меня проблемы с созданием словаря в Python из CSV-файла имен игроков. Ниже приведен пример моего кода:

playerNames = []
with open(player_names) as csvfile
    for row in csv.reader(csvfile)
        playerNames.append(row)

Этот фрагмент кода в основном считывает имена из файла CSV и помещает их во вложенный список, который выглядит следующим образом: [[P1], [P2], [P3], [P4]]

Теперь я хочу добавить эти имена игроков в словарь, а также добавить значение 0 для каждого игрока в словаре, желаемый результат будет выглядеть примерно так: {P1: 0, P2: 0, P3: 0, P4: 0}, однако, я изо всех сил пытаюсь сделать это и был бы очень признателен за некоторую помощь. Я также хотел спросить, можно ли читать имена игроков прямо в словарь, а не сначала читать их в списке?

Любая помощь с этим или некоторым примером кода будет принята с благодарностью, так как я новичок в использовании словарей

Спасибо,

Автор: Sean Источник Размещён: 08.11.2017 10:39

Ответы (3)


0 плюса

1797 Репутация автора

Заменить playerNames = []на playerNames = {}и playerNames.append(row)с playerNames[row[0]] = 0. И «добавление» 0 не совсем правильный термин: вы назначаете ноль для каждой клавиши.

Автор: Acccumulation Размещён: 08.11.2017 10:47

0 плюса

16544 Репутация автора

Решение

Предполагая, что имя каждого игрока появляется только один раз во входном файле:

player_dict = {}
with open('player_names.txt') as players:
    for line in players:
        player_dict[line.strip()]=0

print(player_dict)

Выход:

{'larry': 0, 'tom': 0, 'dick': 0}
Автор: Bill Bell Размещён: 08.11.2017 10:48

0 плюса

667 Репутация автора

С помощью вложенных списков имен вы можете использовать следующее:

playerDict = dict.fromkeys([p[0] for p in playerNames, 0])

или даже:

playerDict = {p[0]:0 for p in playerNames}

Однако я бы посоветовал вам составить только список имен (вместо вложенного списка), добавив только имя со следующим изменением:

playerNames.append(row[0])
Автор: Mark Hannel Размещён: 08.11.2017 10:57
Вопросы из категории :
32x32