【JS|Py】使用filter从列表(数组)中根据字典(对象)的值查找

这篇博客展示了如何在JavaScript和Python中利用filter方法查找包含特定ID的对象。在JavaScript示例中,从jsObjects数组中过滤出id为'03'的项,而在Python中,使用filter函数和lambda表达式实现相同的目标。如果只想检查对象是否存在,可以使用find方法,如在JavaScript示例中演示的那样,查找name属性为'string1'的对象。

JavaScript

var jsObjects = [
  {
  	"id": "01",
  	"value": "01"
  },
  {
  	"id": "02",
  	"value": "02"
  },
  {
  	"id": "03",
  	"value": "03"
  },
  {
  	"id": "03",
  	"value": "04"
  },
  {
  	"id": "05",
  	"value": "05"
  }
];
var result = jsObjects.filter(x => x.id === '03');

参考:https://stackoverflow.com/a/35398031/7151777

Python3

py_dicts = [
    {
        "id": "01",
        "value": "01"
    },
    {
        "id": "02",
        "value": "02"
    },
    {
        "id": "03",
        "value": "03"
    },
    {
        "id": "03",
        "value": "04"
    },
    {
        "id": "05",
        "value": "05"
    }
]
result = list(filter(lambda x: x['id'] == '03', py_dicts))

如果仅仅想判断是否存在, 则可以使用find

let arr = [
    { name:"string 1", value:"this", other: "that" },
    { name:"string 1", value:"this", other: "that" },
    { name:"string 2", value:"this", other: "that" }
];

let obj = arr.find(o => o.name === 'string 1');

console.log(obj);

参考:
https://stackoverflow.com/a/12462414
https://stackoverflow.com/a/25373204/7151777

### 将字典转换为二维数组的方法 在 Python 中,可以使用 NumPy 库将字典转换为二维数组,其中字典的每个是一维数组。以下是实现这一目标的具体方法: #### 方法描述 通过提取字典的所有并将其传递给 `numpy.array` 函数,可以将字典列表转换为二维数组。确保字典的每个都是一维数组,并且所有一维数组的长度一致,否则需要进行填充或调整。 ```python import numpy as np # 示例字典,其中每个是一个一维数组 data_dict = { "key1": [1, 2, 3], "key2": [4, 5, 6], "key3": [7, 8, 9] } # 提取字典中的所有 values_list = list(data_dict.values()) # 转换为二维数组 two_d_array = np.array(values_list) print(two_d_array) ``` 上述代码会输出一个形状为 `(3, 3)` 的二维数组[^1]。 #### 处理不规则长度的一维数组 如果字典中的一维数组长度不一致,则无法直接转换为二维数组。在这种情况下,需要先对齐子数组的长度或填充缺失。例如: ```python import numpy as np # 示例字典,其中一维数组长度不一致 irregular_dict = { "key1": [1, 2], "key2": [3, 4, 5], "key3": [6] } # 提取字典中的所有 values_list = list(irregular_dict.values()) # 填充缺失以使所有子数组长度一致 max_length = max(len(sublist) for sublist in values_list) padded_list = [sublist + [0] * (max_length - len(sublist)) for sublist in values_list] # 转换为二维数组 two_d_array = np.array(padded_list) print(two_d_array) ``` 上述代码中,填充了零以确保所有子数组具有相同的长度[^2]。 #### 结合矩阵操作 一旦将字典转换为二维数组,就可以执行各种矩阵运算。例如,可以进行标量乘法、加法和矩阵加法等操作: ```python import numpy as np # 示例二维数组 two_d_array = np.array([[1, 2], [3, 4]]) # 标量乘法 scaled_array = two_d_array * 2 # 矩阵加法 added_array = two_d_array + np.array([10, 10]) # 矩阵与自身相加 doubled_array = two_d_array + two_d_array print("Scaled Array:\n", scaled_array) print("Added Array:\n", added_array) print("Doubled Array:\n", doubled_array) ``` 上述代码展示了如何对二维数组进行基本的矩阵运算[^3]。 #### 可视化二维数组 如果需要可视化二维数组,可以使用 Matplotlib 库将其作为图像显示: ```python import numpy as np import matplotlib.pyplot as plt # 示例二维数组 image_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 显示图像 plt.imshow(image_array, cmap='Greys', interpolation='None') plt.colorbar() plt.show() ``` 上述代码将二维数组作为灰度图像显示[^4]。 ### 注意事项 - 如果字典不是一维数组,则需要先将其转换为一维数组。 - 如果字典中的一维数组长度不一致,则需要先调整其结构。 - 使用 NumPy 提供的功能可以高效地处理和操作二维数组
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值