rstrip仅适用于第一个字典条目

时间:2019-04-09 18:16:20

标签: python dictionary

因此我使用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循环不能遍历所有键,而只能遍历第一个:(

2 个答案:

答案 0 :(得分:1)

使用dict.items()将使您的生活变得轻松而又遍历。但是在这里,由于您只需要更新值,因此可以使用dict.values()遍历值 还可以使用索引-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']}

答案 1 :(得分:1)

尽管我们都建议使用不同的方法来执行此操作,但请注意,您实际上根本不需要使用这些键。值是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']}