【问题标题】:Dictionary array checks in pythonpython中的字典数组检查
【发布时间】:2019-03-16 01:01:41
【问题描述】:

我有 2 个带数组的字典。仅当“buckets”出现在字典“buckets”的辅助列表中而“labels”匹配时,我才需要主列表中的字典。

primary = [{'buckets': [165, 27],
   'label': 'Andrew'}, {'buckets': [1364],
   'label': 'Matt'},{'buckets':[500, 60, 888], 'label':'John'}]

secondary = [{'buckets': [165, 1447],
  'label': 'Andrew'}, {'buckets': [1365, 15, 16],
  'label': 'Matt'}, {'buckets':[12,10,15], 'label':'Max'}]

data = {}

for x in primary:
    found = False
    for i in secondary:

        for num in x['buckets']:
            if x['label'] == i['label']:
                if num in i['buckets']:
                    found =True
                    break
    if found:
        data[x['label']] = x['buckets']
    else:
        data[i['label']] = i['buckets']

pprint.pprint(data)

如果我改变数组中的匹配项/数字,我不会得到正确的结果。任何帮助将不胜感激。

Desired output:
{'Andrew': [165, 27], 'Matt': [1365, 15, 16]}

这种情况有时会发生,但如果我在中学更改安德鲁斯号码,它可能会以这种方式结束。

{'Matt': [1365, 15, 16]}

【问题讨论】:

  • 目标是如果主字典出现则返回主列表字典,如果没有返回辅助字典则返回辅助列表字典。......这个声明非常混乱和不清楚......“出现在”哪里?
  • @Bazingaa 我编辑了声明。当标签匹配时,我想检查来自主要的存储桶是否在次要。如果是,则返回主字典,如果否,则返回辅助字典。
  • 在此类问题中,对于想要回答的人来说,获得所需的样本输出通常会有所帮助。在您的情况下,所需的输出如何?你能把它包括在问题中吗?
  • @Bazingaa 谢谢你的好点我添加了所需的输出和问题输出。
  • 所需的解决方案应该是{'Andrew': [165, 1447], 'Matt': [1365, 15, 16]}。您想要二级词典中的列表,对吧?

标签: python arrays list dictionary


【解决方案1】:

这里有一个解决方案。我在这里使用的主要观点是intersection,用于检查两个列表之间是否存在共同值。如果有,那么我从primary 中获取列表。如果没有,那么您从secondary 获取列表,正如您在下面的评论中解释的那样。你现在不需要found 标签

data = {}

for x in primary:
    for i in secondary:
        if x['label'] == i['label']:
            if list(set(x['buckets']).intersection(i['buckets'])):
                    data[x['label']] = x['buckets']
                    break
            else:
                data[x['label']] = i['buckets']

print(data)
# {'Andrew': [165, 27], 'Matt': [1365, 15, 16]}

【讨论】:

  • 它还需要确认主键['buckets'] 之一是否在辅助键['buckets'] 中,以便返回主 Andrew 165 或 27 需要在辅助存储桶中,否则取 Secondary安德鲁
猜你喜欢
  • 2017-01-24
  • 2017-06-23
  • 2018-09-28
  • 2019-04-19
  • 2011-04-13
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多