(针对各种语言用例的各种JSON文件。)
import json
# v = "64457.json" #jp
# v = "35777.json" #en, jp, ro
v = "66622.json" #ge, jp, ro
# v = "50900k.json" #ko
# v = "25364c.json" #ch, en
with open(v) as f:
data = json.load(f)
track_list = data['discs'][0]['tracks']
langs = ('German', 'French' , 'Korean', 'Chinese')
for x, track in enumerate(track_list):
for i in track['names']:
print i, len(track["names"].keys())
if i not in langs:
print "NOT I"
if len(track["names"].keys()) == 3 and i in ('Romaji', 'Japanese', 'English'):
d = track["names"]["Romaji"]
s = track["names"]["Japanese"]
y = track["names"]["English"]
print '-', x+1, y, d, s
break
elif len(track["names"].keys()) == 3 and i in langs and i in ('Romaji', 'Japanese'):
d = track["names"]["Romaji"]
s = track["names"]["Japanese"]
y = track["names"][i]
print '@', x+1, y, d, s
break
elif len(track["names"].keys()) == 2 and i in langs:
y = track["names"][i]
e = track["names"]["English"]
print '+', x+1, y, e
break
else:
print '~', x+1, track["names"].values()[0]
German 3
Japanese 3
NOT I
Traceback (most recent call last):
File "main.py", line 25, in <module>
y = track["names"]["English"]
KeyError: 'English'
我正在尝试遍历track['names']
中的每个键。一旦它命中了一个同样在langs
元组中的键,我希望它停止并转到if
节中相应的节。如果它不在langs
元组中,它应该输出它所拥有的信息,特别是如果键是Eng、Rom、和Jpn。我想所有的循环都把我搞糊涂了
我不完全理解您关心哪些条件,但这里有一些代码可以修改以满足您的需要。你有太多for循环,所以我拿出一个,然后设置一些布尔变量,你可以使用
我认为看到一种完全不同的方法来解决这个问题可能会有所帮助:
track["names"]
中有键(我假设这是一本字典)langs
的键,以及langs
的键考虑一下:
filter
将lambda函数应用于keys
中的每个项,返回匿名函数返回true的列表。这是你需要的吗相关问题 更多 >
编程相关推荐