将元组转换为列表

时间:2013-10-16 05:28:32

标签: python list tuples

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'转换为列表。知道我做错了吗?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

.most_common()返回元组列表。当你执行list(listy)时,你实际上什么都没做。它不会将里面的元组更改为列表。

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

但是,您可以使用map()

将其更改为列表
map(list, listy)

答案 2 :(得分:0)

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

为什么要分配新的计数?