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'])