-1
import re
from collections import Counter

words = re.findall('\w+', open('/Users/Jack/Desktop/testytext').read().lower())

listy = Counter(words).most_common()


theNewList = list(listy)


theNewList[1][1] = 10

#****ERROR HERE****
#Traceback (most recent call last):
# File "countTheWords.py", line 16, in <module>
#    theNewList[1][1] = 10
#TypeError: 'tuple' object does not support item assignment

在我看来, list() 调用应该将“listy”转换为列表。知道我做错了什么吗?

4

3 回答 3

2

listy 一个list

>>> type(listy)
<type 'list'>

它的元素不是:

>>> type(listy[1])
<type 'tuple'>

您正在尝试修改其中一个元素:

>>> type(listy[1][1])
<type 'int'>

您可以像这样转换元素:

>>> listier = [list(e) for e in listy]
>>> type(listier)
<type 'list'>
>>> type(listier[1])
<type 'list'>
>>> type(listier[1][1])
<type 'int'>

然后赋值:

>>> listier[1][1] = 10
>>> listier[1][1]
10
于 2013-10-16T05:32:44.557 回答
1

.most_common()返回一个元组列表。当你这样做时list(listy),你实际上并没有改变任何东西。它不会将里面的元组更改为列表。

由于元组是不可变的,它们不会让您更改其中的项目(与可变的列表相比)。

但是,您可以使用以下方法将它们更改为列表map()

map(list, listy)
于 2013-10-16T05:30:45.177 回答
0

theNewList[1]是一个有效的列表项访问,它返回一个元组。因此theNewList[1][1] = 10尝试分配给元组项。这是无效的,因为元组是不可变的。

你为什么要分配一个新的计数呢?

于 2013-10-16T05:30:36.880 回答