这里是python的新手:
我正在尝试创建一个新列表,其中每个初始列表中的dict都删除了一个元素,它存在:
arraylist = [{"x":1, "y":2}, {"x":3, "y":2}, {"x":5, "y":2}, {"x":33, "y":2}, {"x":1, "y":8}]
arraylist = map(lambda d: del d["y"] if "y" in d, arraylist)
我知道我可以使用用于,使用 del来实现。但我正在寻找新的东西。
答案 0 :(得分:4)
使用列表理解:
Content
答案 1 :(得分:2)
您可以使用此类过滤器
int year=2017;
int month=02;
int day=01;
int hour=11;
int minutes=30;
String format="AM";
DateTime datetime = DateTime.ParseExact($"{month}/{day}/{year} {hour}:{minutes}:00 {format}",
"M/d/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
答案 2 :(得分:0)
您无法在del
函数中使用lambda
,因为del
是一个语句而lambda
的正文只能是一个表达式。您不能在表达式中放置语句。你可以使用普通函数:
def delete_y(d):
if "y" in d:
del d['y']
return d
请注意,使用此类del
会修改字典d
。这意味着返回修改后的字典(并使用返回值来构建新列表)有点多余。字典来自的原始数据结构已经具有修改版本。
答案 3 :(得分:0)
也许它不是最短的方式,但它绝对是一种方便的删除方式 列表中的项目:
arraylist = [{"x":1, "y":2}, {"x":3, "y":2}, {"x":5, "y":2}, {"x":33, "y":2}, {"x":1, "y":8}]
print arraylist
def containsY(d):
if 'y' in d.keys():
del d['y']
return True
return False
filter(containsY, arraylist)
print arraylist
输出:
[{'y': 2, 'x': 1}, {'y': 2, 'x': 3}, {'y': 2, 'x': 5}, {'y': 2, 'x': 33}, {'y': 8, 'x': 1}]
[{'x': 1}, {'x': 3}, {'x': 5}, {'x': 33}, {'x': 1}]