用值作为列表列表更改字典的元素

2024-05-12 05:24:59 发布

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

我有一本类似的字典

x ={'1': [['a','b'],['ac','d']], '2' : [['p','qa'],['r','s']]} 

我想访问单独的字符串,如a,b等,比较它是否有“a”,删除这些。你知道吗

主要问题是-如何访问字符串?我该怎么改?你知道吗

我尝试使用嵌套循环,但无法更改,因为我猜赋值stmt不能以这种方式工作。你知道吗

你知道如何处理这种情况吗?你知道吗

编辑:我使用的天真方法-

for item in x:
    for ele in x[item]:
        for i in ele:
             i = #assign new value here using regex comparison

但当我试着在这之后打印x时,它保持不变。 很明显。赋值语句不是这样工作的。我该如何访问元素来更改它?你知道吗


Tags: 方法字符串in编辑for字典方式情况
2条回答
>>> x ={'1': [['a','b'],['ac','d']], '2' : [['p','qa'],['r','s']]}
>>> for key in x:
...     for n, item in enumerate(x[key]):
...             x[key][n] = list(filter(lambda l: 'a' not in l, x[key][n]))
...
>>> x
{'2': [['p'], ['r', 's']], '1': [['b'], ['d']]}

在你的例子中

for item in x:
    for ele in x[item]:
        for i in ele:
            i = #assign new value here using regex comparison

iele中字符串的副本,因此分配给它对原始字符串没有影响。您需要修改列表ele。可能是ele[ele.index(i)] = #whatever。但是,请注意,如果列表中的值相同,这将无法正常工作。它只会改变第一个。你知道吗

我不确定你到底想做什么,但使用列表理解可能更容易,至少对于最里面的列表来说是这样。这将允许您更改最里面列表的每个元素。也许吧

for item in x.values():
    for ele in item:
        ele[:] = [#whatever for i in ele]

其中需要ele[:]来更改原始的内部列表(仅仅ele是行不通的),当我们实际需要值而不是键时,我使用了更为Pythonic的x.values()。你知道吗

相关问题 更多 >