使用Python处理列表字典

使用Python处理列表字典,python,list,dictionary,Python,List,Dictionary,我有一个字典,其中包含四个键,每个键代表一个文件名,值是嵌套列表,如下所示: {'file1': [[['1', '909238', '.', 'G', 'C', '131', '.', 'DP=11;VDB=3.108943e02;RPB=3.171491e-01;AF1=0.5;AC1=1;DP4=4,1,3,3;MQ=50;FQ=104;PV4=0.55,0.29,1,0.17', 'GT:PL:GQ', '0/1:161,0,131:99'], ['1', '909309', '.',

我有一个字典,其中包含四个键,每个键代表一个文件名,值是嵌套列表,如下所示:

{'file1': [[['1', '909238', '.', 'G', 'C', '131', '.', 'DP=11;VDB=3.108943e02;RPB=3.171491e-01;AF1=0.5;AC1=1;DP4=4,1,3,3;MQ=50;FQ=104;PV4=0.55,0.29,1,0.17', 'GT:PL:GQ', '0/1:161,0,131:99'], ['1', '909309', '.', 'T', 'C', '79', '.', 'DP=9;VDB=8.191851e-02;RPB=4.748531e-01;AF1=0.5;AC1=1;DP4=5,0,1,3;MQ=50;FQ=81.7;PV4=0.048,0.12,1,1', 'GT:PL:GQ', '0/1:109,0,120:99']......,'008_NTtrfiltered': [[['1', '949608', '.', 'G', 'A',...}
我的问题是如何只检查列表中的前两个元素,例如“1”、“909238”,如果它们是相同的,那么将它们写入一个文件。我之所以要这样做,是因为我只想过滤四个文件(键)的公共值(仅列表的前两个元素)

提前多谢
最好。

您可以访问字典词典的关键字,并使用以下方法进行比较:

f = open('file.txt','w')
value_to_check_1 = '1'
value_to_check_2 = '909238'

for k in dictio:
   value_1 = dictio[k][0][0][0]
   value_2 = dictio[k][0][0][1]
   if (( value_1 == value_to_check_1) and (value_2 == value_to_check_2)):
          f.write('What you want to write\n')
f.close()
如果你想做一个检查,暗示你字典词汇的每一个值

也许您想存储dictio中的一对值

然后,你可以做一个循环,并迭代对夫妇做你的检查

示例:您可以根据需要进行调整:

for e in values_to_check:
     for c in couples:
           if (float(e[0][0][0]) >= float(c[0]) and float(e[0][0][1]) <= float(c[1])):
                     f.write(str(e[0][0][0]) + str(e[0][0][1])  + '\n') 
对于值为\u至\u检查的e:
对于c对夫妇:

如果(float(e[0][0][0])>=float(c[0])和float(e[0][0][1]),我的dict[“你想要的文件”][0][0][{0或1}有什么问题
?您的值是否具有相同的维度?@Embody Hi-Embody,我尝试过,但没有效果。@Kasra它们具有相同的维度。感谢您的帮助。要检查的值将在字典中的值之间,而不是与您声明的“值对检查1”和“值对检查1”进行比较。此外,当我尝试你的方法时,它只会检查一次或一次值的迭代,然后结束检查,但我的目标是检查四个键之间的整个值字典,而不是只检查一次值的迭代。我希望我的描述是清楚的。再次非常感谢。
for e in values_to_check:
     for c in couples:
           if (float(e[0][0][0]) >= float(c[0]) and float(e[0][0][1]) <= float(c[1])):
                     f.write(str(e[0][0][0]) + str(e[0][0][1])  + '\n')