从字典中获取ID列表的Python方法

时间:2018-12-02 05:22:20

标签: python arrays python-3.x dictionary array-map

假设我具有以下数据结构

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"]; } ));

2 个答案:

答案 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