从dicts列表中查找具有用户输入密钥的dict

时间:2016-09-02 11:06:38

标签: python json

python 3.5

嗨我有这个简单的json.json文件:

JSON

{"x": [
    {"A": "B"},
    {"C": "D"},
    {"E": "F"}
]}

我有这个代码来找到A或C或E之后的字母

data = json.load(open('json.json'))
R = 'C' #user input
print(data['x'][1][R])

如何在不知道的情况下找到具有密钥的dict,并对dict的索引进行硬编码?

2 个答案:

答案 0 :(得分:3)

所以你想通过搜索而不用硬编码索引来找到这个值,你需要的是一个循环来检查每个dict的密钥:

data = json.load(open('json.json'))
R = 'C' #user input
for d in  data['x']:
    if R in d:
        print(d[R])
        break # if there can be more that one match then remove

答案 1 :(得分:0)

正如Padraic Cunningham指出的那样,你需要循环你的结果。您的解决方案如下所示:

data = json.load(open('json.json'))
R = 'C' #user input
print([x for x in data['x'] if x.keys()[0] == R][0][R])

[x for x in data['x'] if x.keys()[0] == R]为您提供列表中带有键R的所有词典。假设您没有重复的键,请选择第一个元素并访问其值。