Python 循环浏览字典列表以检查每个字典是否包含特定键

Python 循环浏览字典列表以检查每个字典是否包含特定键,python,for-loop,typeerror,Python,For Loop,Typeerror,我正在使用python3,尝试循环浏览字典列表,以检查每个字典包含键“Retweetd_status”的位置。目前,我的代码是: for item in tweets_data: if 'retweeted_status' in item: retweets2.append(item) else: pass 我得到的类型错误是: --------------------------------------------------------------------------

我正在使用python3,尝试循环浏览字典列表,以检查每个字典包含键“Retweetd_status”的位置。目前,我的代码是:

for item in tweets_data:
if 'retweeted_status' in item:
    retweets2.append(item)
else: 
    pass
我得到的类型错误是:

---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
1对于tweets_数据中的项目:
---->2如果项目中的“转发状态”:
3转发2.追加(项目)
4其他:
5通
TypeError:类型为“int”的参数不可编辑

tweets\u data
是包含来自文本文件的tweets的列表。为了创建这个列表,我打开并读取了文本文件。对于文本文件中的每一行,我都使用json.loads(line)并将json.loads(line)的结果保存到一个变量中。然后我将保存的结果添加到tweets\u data

我不完全理解这个错误。这是否意味着该项目不适用

我想象这段代码的工作方式是,它在我的字典列表上迭代(因此,每个条目都是一个字典)…那么为什么字典需要是可编辑的呢?任何解释都会非常有用



因此,无论出于什么原因,我的
推特数据
都不是一个完整的字典列表,也不是下面评论中提到的整数

如果没有看到其中所有变量的值,很难说代码出了什么问题

然而,这是一种更简短、更“pythonic”的方式来做你想做的事情

new_list = [dict for dict in list_of_dicts if "retweeted_status" in dict]

这是你的答案。。我放了一个虚拟的字典列表进行测试,您的数据很可能是不同的结构,但过程不应该太不同

new_list = []
list_of_dict = [{'name':'dict 1'},{'retweeted_status':True},{'name':'dict 3'}]
for item in list_of_dict:
  if 'retweeted_status' in item:
    new_list.append(item)

print new_list

请看起来
list\u of dicts
包含整数…我怀疑您
list\u of dicts
不是字典,而是整数。请尝试添加
打印类型(list\u of dics)
。您还应
在内部循环中打印类型(项目)
。请在问题中显示带有完整回溯的错误消息。在哪一条线上?如何构建目录列表?什么类型的
条目
?换句话说:你所写的内容应该适用于字典列表。因此,您的输入不是字典列表。没有更多的信息,所有人都可以告诉你。@Jean-Françoisfare,谢谢。将编辑。这肯定有效。所以,我认为我的问题一定是我字典列表的结构。谢谢谢谢你用这种更像蟒蛇的方式。这也行得通,所以我认为问题出在我的dicts的
列表的结构上。Pythonic不会使用dict作为变量名