如何检查字符串是否与字典lis中存储的值匹配

2024-07-08 15:38:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典,其中每个键都有多个列表作为其值。我想分析所有列表中的某个索引,看看它们包含什么值,也就是说,我想要列表的第二个索引。我试着检查某个数字(以字符串形式存储)是否存储在那里。如果数字在那里,我将预定义变量的位从0更改为1。我希望将这个二进制数作为原始键的值存储在另一个字典中。在

for key, value in dfDict.items():
  for sublist in value:
    channelBinary = list('0000')
    if '0' in sublist[2]:
        channelBinary[3] = '1'
    if '1' in sublist[2]:
        channelBinary[2] = '1'
    if '2' in sublist[2]:
        channelBinary[1] = '1'
    if '3' in sublist[2]:
        channelBinary[0] = '1'

我知道这是错误的,因为它将基本上检查与我的字典键相关联的每个列表,并为每个列表创建一个二进制数。我只想要一个二进制数,它告诉我每个字典键在每个列表的第二个索引中存储的所有值。我也试过这样的方法

^{pr2}$

我知道这段代码是错误的,但希望您看到我遗漏了值的第一个方括号的索引,这意味着我基本上想忽略列表索引,只关心子列表索引。在

编辑:字典结构示例。这只是印刷词典的结果

{'key1': [('data1', 'dataA', '1', 'data_a'),
          ('data2', 'dataB', '2', 'data_b'),
          ('data3', 'dataC', '0', 'data_c')],
 'key2': [('data4', 'dataD', '3', 'data_d'),
          ('data5', 'dataE', '2', 'data_e'),
          ('data6', 'dataF', '1', 'data_f'),]}

Tags: key字符串in列表fordataif字典
2条回答

只需使用第一个示例,但将channelBinary = list('0000')移出内部循环:

for key, value in dfDict.items():
    channelBinary = list('0000')
    for sublist in value:
        for i in range(len(channelBinary)):
            if str(i) in sublist[2]:
                channelBinary[len(channelBinary) - 1 - i] = '1'

我将添加另一个答案,因为现在我肯定知道你想要什么,如果你想要每个键都有一个二进制,你可以按照你的代码来做(这可以做得更简单和漂亮,但我不想在这里放弃你的工作):

dfDict = {'key1': [('data1', 'dataA', '1', 'data_a'),
          ('data2', 'dataB', '2', 'data_b'),
          ('data3', 'dataC', '0', 'data_c'),],
       'key2': [('data4', 'dataD', '3', 'data_d'),
                ('data5', 'dataE', '2', 'data_e'),
                ('data6', 'dataF', '1', 'data_f'),]}
channelBinary = []
index = 0
for key, value in dfDict.items():
    channelBinary.append(list('0000'))
    for sublist in value:
      if '0' in sublist[2]:
          channelBinary[index][3] = '1'
      if '1' in sublist[2]:
          channelBinary[index][2] = '1'
      if '2' in sublist[2]:
          channelBinary[index][1] = '1'
      if '3' in sublist[2]:
          channelBinary[index][0] = '1'
    index += 1


print(channelBinary)

[['0', '1', '1', '1'], ['1', '1', '1', '0']]

相关问题 更多 >

    热门问题