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