Python在一个没有for循环的列表中处理每个dict

Python在一个没有for循环的列表中处理每个dict,python,Python,我有一个目录,比如: data=[{"a":11,"s":21}, {"a":12,"s":22}, {"a":13,"s":23}, {"a":14,"s":24}] 我需要将键s的所有值转换为sting,现在我使用for循环来实现这一点: for i in range(len(data)): data[i]["s"] = str(data[i]["s"]) 这是可行的,但是有没有优雅的方法可以在一个表达式中处理这个问题?

我有一个目录,比如:

   data=[{"a":11,"s":21},
         {"a":12,"s":22},
         {"a":13,"s":23},
         {"a":14,"s":24}]
我需要将键s的所有值转换为sting,现在我使用for循环来实现这一点:

for i in range(len(data)):
    data[i]["s"] = str(data[i]["s"])

这是可行的,但是有没有优雅的方法可以在一个表达式中处理这个问题?

使用for循环是完美的python和优雅的,您的代码唯一的问题是使用它来迭代列表的元素,请改为执行以下操作:

data = [{"a": 11, "s": 21},
        {"a": 12, "s": 22},
        {"a": 13, "s": 23},
        {"a": 14, "s": 24}]

for e in data:
    e['s'] = str(e['s'])

print(data)
输出


环是优雅的方式。将迭代放在dict对象本身上,而不是列表索引上

for d in data:
    d['s'] = str(d['s'])

使用列表理解不必要地构建给定dict的新列表。

使用for循环完全可以: 但是,您应该改用此结构: 对于数据中的字符,其中字符已经是内容,并且不需要调用列表[x]

与您的方法相比,它不那么冗长: '对于lenlist范围内的x
列表操作[x]`

感谢您的回复!你能解释一下为什么这个范围不适合这里吗…@user2894829它是合适的,只是不需要。。。因为您只使用索引访问相应列表的元素,为什么不直接循环元素本身呢?@user2894829阅读本文,特别是关于范围的部分
for d in data:
    d['s'] = str(d['s'])