循环遍历字典列表以检查每个字典是否包含特定键

2024-10-04 03:19:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python3,尝试在字典列表中循环,以检查每个字典中是否包含键“retweetd\u status”。目前,我的代码是:

for item in tweets_data:
if 'retweeted_status' in item:
    retweets2.append(item)
else: 
    pass

我得到的类型错误是:

--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-38-8c0e9225c623> in <module>() 1 for item in tweets_data: ----> 2 if 'retweeted_status' in item: 3 retweets2.append(item) 4 else: 5 pass TypeError: argument of type 'int' is not iterable。你知道吗

tweets_data是一个包含来自文本文件的tweet的列表。为了创建这个列表,我打开并读取了文本文件。对于文本文件中的每一行,我使用json.loads文件(行)并从中保存结果json.loads文件(行)到一个变量。然后我附加了保存的结果tweets_data。你知道吗

我不完全理解这个错误。这是否意味着该项目是不可编辑的?你知道吗

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


所以,不管出于什么原因,我的tweets_data并不是一个完整的字典列表,它包含了人们在下面的评论中建议的整数


Tags: 代码in列表fordataif字典status
2条回答

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

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

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

然而,这是一个更简短和更“Python”的方式做你想做的事。你知道吗

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

相关问题 更多 >