【问题标题】:(python)how to change the key conparation in dictionary?(python)如何更改字典中的键名?
【发布时间】:2016-05-30 03:28:22
【问题描述】:

我想建立一个像段树这样的段字典。 我的意思是我想使用序列 (11, 22) 作为键,如果输入值像 11 它应该使用相同的键。 怎么做。

例如字典是 {(11, 22): 35, (44, 45):12}。 我想写研究员:

for i in dictionary:
    blad
    blad

如何改变字典功能使其可以使用“in”操作符?

【问题讨论】:

  • 你可能可以编写自己的插入方法,该方法将通过键 s 并检查 i 中的 11:dict[i] = update value

标签: python dictionary key segment-tree


【解决方案1】:

写下你的插入方法

 def insert(key,value,dict):
     for i in dict:
             if key in i:
                     dict[i]=value

【讨论】:

    【解决方案2】:

    当您使用元组作为字典键时,必须完全使用它们来引用该值。

    在你的情况下,(11,22) 是一个关键。而且您不能单独使用它们来识别值。

    当元组的两个元素共同表示某事时,元组被用作键。 例如:{(<first_name>,<last_name>): <money_owed>}

    为什么元组的元素作为键是不对的?

    例如:{('John','Well'):100, ('John','Mann'):200}

    这里的first_names 都是 John,我们使用一个元组来唯一标识键。

    你想要的就像 list 作为键,你可能没有 list 作为字典 key

    你可以做的是将它们分开(具有相同值的不同键):

    {11: 35, 22: 35, 44:12, 45:12}
    

    参考:Dict keys in python

    你可以使用这个方法(如果你有重复的关键元素,你会遇到问题,如果你确实有重复,你不应该使用元组中的元素来识别值):

    l=[]
    for x in a:
       for i in x:
         l.append({i:a[x]})
    

    这样你会得到如下输出:[{11: 35}, {22: 35}, {44:12}, {45:12}]

    那么您可以将其用作字典列表。

    【讨论】:

    • 这是一个元组而不是一个列表。而且元组是可散列的。
    • @Pythonista 更新了答案。元组元素不能单独用作键。 OP 试图将列表作为不允许的键。
    • @AniMenon 我知道我应该使用完整的元组作为键。
    • @AniMenon 我知道 python 应该使用完整的元组作为键。但我的问题是如何制作一个段字典,如果键对距离内的值将匹配。
    • @user504909 很好,如果您的键元组元素相同,您可能不会使用部分键来引用值。如果您的键元组具有所有唯一值并且这些元组的元素都不相同,请检查更新以回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 2022-07-12
    • 2011-05-23
    • 2017-02-03
    • 1970-01-01
    • 2021-11-01
    • 2021-02-01
    相关资源
    最近更新 更多