Присоединение к списку для создания строки для словарного ключа - PullRequest
0 голосов
/ 16 мая 2019

У меня есть список строк.

Здесь я попытался разделить его на две части:

word_tag = line[:-1] + "/" + line[-1]

Один - от первого до одного перед последним, а другой - последний, являющийся тегом.

Однако, это дает мне следующую ошибку:

Строка:

line: ['#', 'DELM']

TypeError: может только объединить список (не "str") в список

Я хочу сохранить его как ключ, есть ли лучший способ сохранить его, чтобы я мог лучше извлечь часть тега?:

 if word_tag in emissionProbDict.keys():
        emissionProbDict[word_tag] = emissionProbDict[word_tag] + line.count(word_tag)
    else:
        emissionProbDict[word_tag] = line.count(word_tag)

Ответы [ 3 ]

3 голосов
/ 16 мая 2019

Хотите ли вы выводить список или строку?

Если вы хотите список:

word_tag = line[:-1] +["/"] + [line[-1]]

Если вы хотите строку:

word_tag=''.join(line[:-1]) + '/' + line[-1]
1 голос
/ 16 мая 2019

Насколько я понял, вы пытаетесь объединить элементы списка от first до last-1, затем / и затем элемент last списка.

Для этоговам нужно объединить элементы от ( first до last-1 ) , а затем добавить / и last элемент.

Попробуйте это.

word_tag = ''.join(line[:-1])+'/'+line[-1]

''.join(line[:-1]) объединяет элементы списка от first до last-1.

1 голос
/ 16 мая 2019

Чек print( line[:-1] ) и print( line[-1] ).
У вас есть список с одним элементом [ "#" ] и одной строкой "DELM", а не список.
Вы не можете объединить список со строкой.

Вы можете append() строка в список

line = ['#', 'DELM']

word_tag = line[:-1]     # list
word_tag.append("/")     # append element to list
word_tag.append(line[1]) # append element to list

или вам нужно преобразовать строку в список

word_tag = line[:-1] + [ "/" ] + [ line[1] ]

или даже

word_tag = line[:-1] + [ "/", line[1] ]

или используя .extend()

word_tag = line[:-1]
word_tag.extend( [ "/", line[1] ] )

Если вам это нужно как строка, вы можете сделать

word_tag = "".join( word_tag )

EDIT:

Вы также можете преобразовать первый список [ "#" ] в строку при запуске и объединить строки

word_tag = "".join( line[:-1] )  + "/" + line[1]

EDIT:

Если вы хотите использовать список в качестве ключа в словаре, вы не можете этого сделать, потому что ключ должен быть неизменным, а список изменяемым - но вы можете использовать кортеж в качестве ключа в словаре, потому что кортеж неизменен.

word_tag = tuple( line[:-1] + [ "/" ] + [ line[1] ] )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...