为了账号安全,请及时绑定邮箱和手机立即绑定

尝试使用“OrderedDict”数据结构对复杂算法进行编码

尝试使用“OrderedDict”数据结构对复杂算法进行编码

千巷猫影 2022-08-02 10:43:21
我正在尝试编写算法:我有这个数据类型的输入,如下所示:OrderedDictodict_items([(3, [(0, 1), (1, 1), (1, 1)]), (11, [(0, 0), (1, 1), (1, 1)]), (12, [(0, 0), (1, 1), (1, 1)])])我正在尝试编写一个函数来添加每个元组中相同元组的数量,例如预期输出,如下所示:如果存在相同的元组,则如果是两倍,则为一个:key(1,1)12odict_items([(3, [(0, 1), (1, 1), (1, 1)],2), (11, [(0, 0), (1, 1), (1, 1)],2), (12, [(0, 0), (1, 0), (1, 1)]),1])这是我的尝试,但如何改进它并将其添加到?OrderedDictdef foo(OrderedDict):    listOfDic = list(makeDataStruc().items())    tupleCounter = 0    for i in range(len(listOfDic[1])):        if listOfDic[1][1][i][0] == 1 and listOfDic[1][1][i][1] == 1:            tupleCounter += 1    return tupleCounter我在哪里犯了错误?
查看完整描述

1 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

我做出以下假设,

  • 您只想将 计数添加到值中(1,1)OrderedDict

  • 您不希望创建覆盖当前 .OrderedDict

  • 您可以修改原始词典

现在,根据问题中提供的信息和上述假设,一种可能的解决方案是将每个值替换为包含两个元素的列表,即'[原始值,(1,1)的计数]。

from collections import OrderedDict


odict_items = [(3, [(0, 1), (1, 1), (1, 1)]),

               (11, [(0, 0), (1, 1), (1, 1)]),

               (12, [(0, 0), (1, 1), (1, 1)])]


my_odict = OrderedDict()


for item in odict_items:

    k, v = item

    my_odict[k] = v

现在计算每个值中出现的次数,并相应地更新值(1,1)


pattern_to_find = (1, 1)


for key, value in my_odict.items():

    tuple_count = value.count(pattern_to_find)

    new_value = [value, tuple_count]

    my_odict[key] = new_value

现在字典有以下内容:


OrderedDict([(3, [[(0, 1), (1, 1), (1, 1)], 2]),

             (11, [[(0, 0), (1, 1), (1, 1)], 2]),

             (12, [[(0, 0), (1, 1), (1, 1)], 2])])

现在,您可以创建其他函数以仅访问值或元组计数


# Returns the count of (1, 1) only

def get_count(my_dict, key):

    return my_dict[key][1]


# Return the original value only

def get_tuple(my_dict, key):

    return my_dict[key][0]

所以你可以像这样使用它们


print(my_odict[3])

# [[(0, 1), (1, 1), (1, 1)], 2]


print(get_count(my_odict,3))

# 2


print(get_tuple(my_odict, 3))

# [(0, 1), (1, 1), (1, 1)]


查看完整回答
反对 回复 2022-08-02
  • 1 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信