python - 如何比较python中默认字典中列表的索引值

标签 python list dictionary

我在 python 中有一个默认的字典 d,其中包含两个列表,如下所示:

{
    'data1': [0.8409093126477928, 0.9609093126477928, 0.642217399079215, 0.577003839123445, 0.7024399719949195, 1.0739533732043967], 
    'data2':  [0.9662666242560285, 0.9235637581239243, 0.8947656867577896, 0.9266919525550584, 1.0220039913024457]
}

将来在默认字典中可以有很多列表,如data1data2data3data4等我需要比较默认字典的索引值。因此,对于上面的默认字典,我需要检查天气 data1[0]->0.8409093126477928 是否小于 data2[0]->0.9662666242560285 ,其他索引也一样,并将获奖名单索引的结果存储在单独的列表中,如下所示:

result = ['data1', 'data2', 'data1', 'data1', 'data1']

如果任何列表的长度大于其他列表,我们只需要检查最后一个索引值是否小于 1。就像 data1[5] 不能与 data2[5] 进行比较,因为 data2[5] 没有值,因此我们将简单地检查是否data1[5]是否小于1。如果它小于 1 那么我们将考虑它并将它添加到 result 否则忽略它并且不会将它保存在 result 中。

为了解决这个问题,我想到了从默认字典中提取列表到单独的列表,然后使用 for 循环来比较索引值,但是当我执行 print(d[0]) 打印时0th 索引列表,它打印出 []。为什么它打印为空。我怎样才能比较上面的索引值。请帮忙。谢谢

最佳答案

编辑:按照@ggorlen 的建议,将自定义迭代器替换为 zip_longest

我会像这样使用 custom_iterator,

  • 在每次迭代中从每个数组中压缩最长的一个项目。对于较短的数组,当迭代超过其长度时它将返回 1
  • 列表理解循环遍历迭代器并获取最小项的第一个索引 item.index(min(item)) 然后获取对应于最小值的键 keys[item.index (min(item))]
  • 如果选择的列表比当前迭代器索引短,它要么跳过要么给出“NA”值
from itertools import zip_longest

keys = list(d.keys())
lengths = list(map(len,d.values()))

result = [keys[item.index(min(item))] 
          for i, item in enumerate(zip_longest(*d.values(), fillvalue=1))
          if lengths[item.index(min(item))]>i]

result

如果你想在找到的最小值不小于一个时给出默认键而不是跳过

result = [keys[item.index(min(item))] if lengths[item.index(min(item))]>i else "NA"
          for i, item in enumerate(zip_longest(*d.values(), fillvalue=1))]

关于python - 如何比较python中默认字典中列表的索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58151780/

相关文章:

python - 零值的 Matplotlib 对数刻度

python - Tkinter 在不同的计算机上看起来不同

python - 将嵌套列表转换为 pd Dataframe 的快速且 Pythonic 的方法

python - 将字典值映射到列表

java - 更新 mongo 抛出 ConcurrentModificationException?

dictionary - Java 8 将 Map<Department, List<Person>> 转换为 Map<Department, List<String>>

python - 如何在 python 中获取 pandas 的 x 和 y 值对

c# - 排序字符串数字

python以相同的顺序将字典保存到csv

python - 从各个距离创建距离矩阵