rstrip只对第一个字典条目起作用

2024-04-29 22:42:59 发布

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

所以我使用rstrip来去除字典条目末尾的新行标识符

这是我正在使用的词典:

{'100': ['Smith', 'James', '66', '150\n'], '101': ['Jones', 'Linda', '62', '124\n'], '102': ['Davis', 'David', '68', '180\n'], '103': ['Miller', 'Sandra', '65', '90\n'], '104': ['Taylor', 'Paul', '72', '150\n']}

注意\n在每个

所以为了解决这个问题,我只创建了一个键列表。然后使用for循环结束每个条目

keys = [k for k in dictionary]

for key in keys:

    dictionary[key][3] = dictionary[key][3].rstrip('\n')

但是,当我执行此操作时,输出只会删除键100的第一个\n,而其余的保留。这本新字典是这样的:

{'100': ['Smith', 'James', '66', '150'], '101': ['Jones', 'Linda', '62', '124\n'], '102': ['Davis', 'David', '68', '180\n'], '103': ['Miller', 'Sandra', '65', '90\n'], '104': ['Taylor', 'Paul', '72', '150\n']}

Process finished with exit code 0

第一个入口完全固定,但其余的保持不变。我不明白为什么for循环没有遍历所有键,而只遍历第一个键:(


Tags: keyfordictionary字典条目davidsmithjones
2条回答

虽然我们都建议用不同的方法来实现这一点,但请注意,实际上根本不需要使用这些键。这些值是list,所以它们是可变的。因此,这里有另一种方法:

dictionary = {'100': ['Smith', 'James', '66', '150\n'], '101': ['Jones', 'Linda', '62', '124\n'], '102': ['Davis', 'David', '68', '180\n'], '103': ['Miller', 'Sandra', '65', '90\n'], '104': ['Taylor', 'Paul', '72', '150\n']}

for value in dictionary.values():
    value[-1] = value[-1].rstrip("\n")
dictionary
# {'100': ['Smith', 'James', '66', '150'], 
#  '101': ['Jones', 'Linda', '62', '124'], 
#  '102': ['Davis', 'David', '68', '180'], 
#  '103': ['Miller', 'Sandra', '65', '90'],
#  '104': ['Taylor', 'Paul', '72', '150']}

使用dict.items()将使您的生活在迭代过程中变得轻松。但是在这里,因为您只需要更新值,所以可以使用dict.values()对值进行迭代 还可以使用index-1来获取列表中的最后一个元素

dictionary = {'100': ['Smith', 'James', '66', '150\n'], '101': ['Jones', 'Linda', '62', '124\n'], '102': ['Davis', 'David', '68', '180\n'], '103': ['Miller', 'Sandra', '65', '90\n'], '104': ['Taylor', 'Paul', '72', '150\n']}

for  value in dictionary.values():

    value[-1] = value[-1].rstrip('\n')

print(dictionary)
#{'100': ['Smith', 'James', '66', '150'], 
#'101': ['Jones', 'Linda', '62', '124'], 
#'102': ['Davis', 'David', '68', '180'], 
#'103': ['Miller', 'Sandra', '65', '90'],
#'104': ['Taylor', 'Paul', '72', '150']}

相关问题 更多 >