如何在字典中的列表中编辑多个字符串?



我目前正在使用一个使用字典的数据结构,其中每个键的值是一个列表。为了回答这个问题,我把我的结构简化成了一个容易理解的例子。

使用for循环,如何循环遍历每个列表的值并根据每个字符串中的特定字符更改它们?这是我目前所看到的:

test_dict = {"key1": ["value1", "value2"], "key2": ["value3", "value4"]}
for key in test_dict:
for value in test_dict[key]:
if "v" in value:
test_dict["key1"][value.index(value)] = value.replace("v", "")

输出:

{'key1': ['alue4', 'value2'], 'key2': ['value3', 'value4']}

for循环只返回编辑后的值1,由于某种原因,它被更改为值4。我如何编辑循环以删除所有值中的字母v,并将它们都保存在正确的位置?

编辑:谢谢大家对"key1"拼写错误的评论。而不是"key."我一定是在试着测试循序渐进的功能,忘记把它改回"key."

可以嵌套字典推导式和列表推导式:

test_dict = {"key1": ["value1", "value2"], "key2": ["value3", "value4"]}
output = {k: [v[1:] for v in lst] for k, lst in test_dict.items()}
print(output) # {'key1': ['alue1', 'alue2'], 'key2': ['alue3', 'alue4']}

我使用v[1:]来删除第一个字符,但您可以使用原始代码v.replace('v', '')来代替。

首先,让我们澄清类型:

from typing import *
test_dict: Dict[str, List[str]]
key: str
value: str

当你使用value.index(value)时,你调用str.index(self),它总是返回0。您还使用test_dict["key1"]而不是假定的test_dict[key]

最终代码:

test_dict = {"key1": ["value1", "value2"], "key2": ["value3", "value4"]}
for key in test_dict:
for i in range(len(test_dict[key])): # better in case there are multiple same elements
if "v" in test_dict[key][i]:
test_dict[key][i] = test_dict[key][i].replace("v", "")

我循环遍历索引,因为列表中可能有多个相等/相同的元素。

for循环只返回编辑后的值1,由于某种原因,它被更改为值4。

这是因为您循环遍历整个字典,每次只将test_dict["key1"][0]替换为最后迭代的值。

更具体地说,让我们计算代码并打印每次迭代的结果以及值的索引:

test_dict = {"key1": ["value1", "value2"], "key2": ["value3", "value4"]}
for key in test_dict:
for value in test_dict[key]:
if "v" in value:
test_dict["key1"][value.index(value)] = value.replace("v", "")
print(test_dict)
print(value.index(value))

输出是:

{'key1': ['alue1', 'value2'], 'key2': ['value3', 'value4']}
0
{'key1': ['alue2', 'value2'], 'key2': ['value3', 'value4']}
0
{'key1': ['alue3', 'value2'], 'key2': ['value3', 'value4']}
0
{'key1': ['alue4', 'value2'], 'key2': ['value3', 'value4']}
0

正如您所看到的,您只在每次迭代中更改test_dict["key1"][0]

关于这个问题的答案,我的建议是:

for k, v in test_dict.items():
test_dict[k] = [value.replace("v", "") for value in v]

相关内容

  • 没有找到相关文章

最新更新