从字典中获取 ID 列表的 Pythonic 方式
Pythonic way of getting a list of IDs from a dictionary
假设我有以下数据结构
theValues = [
{ "id": "123", "name": "foo" },
{ "id": "321", "name": "bar" },
{ "id": "231", "name": "baz" }
]
获取 ID [123,321,231]
列表的最佳 Python 主义方法是什么?
如果这是 javascript,我可能只是使用匿名函数对列表中的每个元素使用过滤器,但我似乎找不到 Python 等价物。我知道我可以做到以下几点:
myList = []
for v in theValues: myList.append(v["id"])
最终,我想将字典列表缩减为以逗号分隔的列表,我想我可以通过连接来完成……尽管这种语法对我来说仍然很奇怪。有没有更好的方法?
myListIds = ",".join( myList )
这是最常见的做法吗?在 PHP 中,我可以做类似的事情:
$myListIds = implode(",", array_map( values, function( v ) { return v["ID"]; } ));
还有一种方法可以使用 Python 进行映射,请参见下面的示例。
values = [
{ "id": "123", "name": "foo" },
{ "id": "321", "name": "bar" },
{ "id": "231", "name": "baz" }
]
my_list = map(lambda x: x["id"], values)
print(my_list)
输出:
['123', '321', '231']
关于逗号分隔的列表,如果你想要一个字符串,你可以使用join
如下获取:
print(", ".join(my_list))
如果您想在一行代码中完成,请按以下步骤操作:
print(", ".join(map(lambda x: x["id"], values)))
输出:
123, 321, 231
values = [
{ "id": "123", "name": "foo" },
{ "id": "321", "name": "bar" },
{ "id": "231", "name": "baz" }
]
ids = [val['id'] for val in values]
print(ids)
基于此answer
假设我有以下数据结构
theValues = [
{ "id": "123", "name": "foo" },
{ "id": "321", "name": "bar" },
{ "id": "231", "name": "baz" }
]
获取 ID [123,321,231]
列表的最佳 Python 主义方法是什么?
如果这是 javascript,我可能只是使用匿名函数对列表中的每个元素使用过滤器,但我似乎找不到 Python 等价物。我知道我可以做到以下几点:
myList = []
for v in theValues: myList.append(v["id"])
最终,我想将字典列表缩减为以逗号分隔的列表,我想我可以通过连接来完成……尽管这种语法对我来说仍然很奇怪。有没有更好的方法?
myListIds = ",".join( myList )
这是最常见的做法吗?在 PHP 中,我可以做类似的事情:
$myListIds = implode(",", array_map( values, function( v ) { return v["ID"]; } ));
还有一种方法可以使用 Python 进行映射,请参见下面的示例。
values = [
{ "id": "123", "name": "foo" },
{ "id": "321", "name": "bar" },
{ "id": "231", "name": "baz" }
]
my_list = map(lambda x: x["id"], values)
print(my_list)
输出:
['123', '321', '231']
关于逗号分隔的列表,如果你想要一个字符串,你可以使用join
如下获取:
print(", ".join(my_list))
如果您想在一行代码中完成,请按以下步骤操作:
print(", ".join(map(lambda x: x["id"], values)))
输出:
123, 321, 231
values = [
{ "id": "123", "name": "foo" },
{ "id": "321", "name": "bar" },
{ "id": "231", "name": "baz" }
]
ids = [val['id'] for val in values]
print(ids)
基于此answer