假设我具有以下数据结构
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"])
最终,我想将字典列表简化为以逗号分隔的列表,我想我可以用join来做……尽管这种语法对我来说仍然很奇怪。有更好的方法吗?
myListIds = ",".join( myList )
这是最常用的方法吗?在PHP中,我可以执行以下操作:
$myListIds = implode(",", array_map( values, function( v ) { return v["ID"]; } ));
答案 0 :(得分:5)
values = [
{ "id": "123", "name": "foo" },
{ "id": "321", "name": "bar" },
{ "id": "231", "name": "baz" }
]
ids = [val['id'] for val in values]
print(ids)
基于此answer
答案 1 :(得分:3)
还有一种使用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