我正在尝试创建一个新字典,该字典仅从另一个字典中过滤出包含50个或更多字符的推文的值。我不知道该用什么来添加新的字典
我尝试使用.update,但这似乎只是在for循环之后将最后的tweet添加到新字典中
def is_short_tweet(tweet):
if len(tweet) < 50:
return True
else:
return False
1_filtered = dict()
for i in 1_tweets:
if not is_short_tweet(i["text"]):
1_filtered.update(i) """ what do I use here to add to the new, filtered dict?"""
答案 0 :(得分:1)
您始终可以使用dict
理解来进行过滤:
d = {1:'a'*49, 2:'b'*50, 3:'c'*51}
#{1: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
# 2: 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
# 3: 'ccccccccccccccccccccccccccccccccccccccccccccccccccc'}
filtered = {k: v for k, v in d.items() if len(v)>=50}
输出:
{2: 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
3: 'ccccccccccccccccccccccccccccccccccccccccccccccccccc'}
答案 1 :(得分:0)
假设tweets
变量是字典列表,而不是一个字典。 (根据您显示的代码,这对我来说没有任何意义。)
您说过要保持多个鸣叫 s ,且长度超过50个字符,因此您可能希望使用词典列表
def is_short_tweet(tweet):
if len(tweet) < 50:
return True
else:
return False
filtered = [] # define filtered as a list, instead of dictionary
for i in tweets:
if not is_short_tweet(i["text"]):
filtered.append(i) # use append() to add i (which is a dictionary ) to the list
有关.update()
词典方法的说明:
如果键不在字典中,则update()方法将元素添加到字典中。如果键在字典中,则会使用新值更新键。
由于每个推文都具有相同的键,所以您要做的是使用找到的最新长推文来更新此信息。