Python搜索带有键值的Json

Python搜索带有键值的Json,python,json,search,Python,Json,Search,我有一个JSON文件,我正在尝试使用值(而不是键)进行搜索。Python中是否有一个内置函数可以这样做 [["2778074170846781111111110", "a33104eb1987bec2519fe051d1e7bd0b4c9e4875"], ["2778074170846781111111111", "f307fb3db3380bfd27901bc591eb025398b0db66"]] 我想到了这种方法。将文件加载到列表中并开始搜索。有没有更有效的方法 def Optio

我有一个JSON文件,我正在尝试使用值(而不是键)进行搜索。Python中是否有一个内置函数可以这样做

 [["2778074170846781111111110", "a33104eb1987bec2519fe051d1e7bd0b4c9e4875"],
  ["2778074170846781111111111", "f307fb3db3380bfd27901bc591eb025398b0db66"]]
我想到了这种方法。将文件加载到列表中并开始搜索。有没有更有效的方法

def OptionLookUp(keyvalue):
    with open('data.json', 'r') as table:
        x= json.loads(table)
编辑:

有关列表:

your_list = [['a', 1], ['b', 2], ['c', 'asd']]  # the list
your_value = 'asd'  # the value to look for
[elem for elem in your_list if elem[1] == 'asd']  # look for element with value == your_value
Output: [('c', 'asd')]

在编辑之后,我可以说,没有比将JSON转换为python二维列表、循环每个节点并将第二个字段与“keyvalue”进行比较更快/更有效的方法了


编辑:更快/更高效

我假设您正在查找与给定值关联的键

如果保证数据是(键、值)对的列表,这取决于1/数据量和2/必须在同一数据集上执行的查找次数,则可以执行简单的顺序搜索:

def slookup(lst, value):
    return [k for k, v in lst if v == value]
或构建反向索引,然后查找索引:

import defaultdict
def index(lst):
    d = defaultdict(list)
    for k, v in lst:
        d[v].append(k)
    return d

rindex = index(lst)
print rindex.get(someval)
print rindex.get(someotherval)

第二种解决方案只有在同一数据集上有很多查找时才有意义,显然

这是一个普通的二维列表(不是字典),所以你没有只包含键的值。你想找到什么?使用for循环检查每一行。正如furas所说,它是二维列表(python),或者当谈到JSON时,它是二维数组。这是键值JSON:{'key':'value'}。正如furas所问的,您传递函数的“keyvalue”示例是什么?没错,但它仍然是一个有效的JSON。您可以在这里检查,请指定(使用输入/输出示例)您所说的“搜索”是什么意思?输入=a33104eb1987bec2519fe051d1e7bd0b4c9e4875输出=27780741170846781111110我已经像这样做了def OptionLookUp(键):使用open('data.json',r')作为表:x=json.load(table)for I in x:if(I[1]==键):打印操作的数据是列表列表,而不是命令。谢谢!。这就是我想知道的:)
import defaultdict
def index(lst):
    d = defaultdict(list)
    for k, v in lst:
        d[v].append(k)
    return d

rindex = index(lst)
print rindex.get(someval)
print rindex.get(someotherval)