当前位置: 首页 > 面试题库 >

为什么使用setdefault()乱序创建此python字典?

谭高峯
2023-03-14
问题内容

我刚刚开始使用Python(VBA背景)。为什么此字典创建混乱?不应该是a:1,b:2 …等吗?

class Card:
def county(self):
    c = 0
    l = 0
    groupL = {}  # groupL for Loop
    for n in range(0,13):
        c += 1
        l = chr(n+97)
        groupL.setdefault(l,c)
    return groupL

pick_card = Card()
group = pick_card.county()
print group

这是输出:

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}

还是只是打印出乱序?


问题答案:

字典在python中没有顺序。换句话说,当您遍历字典时,键/项目“屈服”的顺序不是您将其放入字典的顺序。(在其他版本的python上尝试您的代码,您可能会获得不同顺序的输出)。如果您要订购的字典,则需要一个collections.OrderedDict直到python
2.7才引入的字典。ActiveState如果您使用的是旧版本的python
,则可以找到等效的食谱。但是,通常只需对项目进行排序就足够了(例如sorted(mydict.items())

*根据要求 *编辑 ,一个OrderedDict示例:

from collections import OrderedDict
groupL = OrderedDict()  # groupL for Loop
c = 0
for n in range(0,13):
    c += 1
    l = chr(n+97)
    groupL.setdefault(l,c)

print (groupL)


 类似资料:
  • 我正在维护一个Julia库,其中包含一个函数,用于在长字符串中每80个字符后插入一行新行。 当字符串长度超过100万个字符时,此函数将变得非常慢(秒或更长)。时间的增长似乎不仅仅是线性的,可能是二次的。我不明白为什么。有人能解释一下吗? 这是一些可复制的代码: 似乎这一行是大部分时间花费的地方: 这是否意味着初始化一个新的需要很长时间?这并不能真正解释超线性运行时间。 我知道构建字符串的标准快速方

  • 本文向大家介绍python字典的setdefault的巧妙用法,包括了python字典的setdefault的巧妙用法的使用技巧和注意事项,需要的朋友参考一下 现在有一个员工字典,类似这样的结构 假设我们要给员工添加爱好信息,但是我们不知道hobby这个键存不存在,我们通常的做法是分为三步: 1)从字典中取到hobbies对应的值,如果没有hobbies这个键,则设置这个值为空列表 2)对这个值进

  • 问题内容: 这是我尝试从中获取数据的示例网页。 http://www.makospearguns.com/product-p/mcffgb.htm xpath取自chrome开发工具,firefox中的firepath也能够找到它,但是使用lxml时,它只会为“ text”返回一个空列表。 使用以下命令打印树文本 显示数据在那里,但是xpath似乎无法找到它。我有什么想念的吗?我尝试使用lxml和

  • 问题内容: 我正在研究THREE.js,并注意到其中定义函数的模式如下: 这种方法的 正常 变化如下所示: 将第一个版本与 正常 版本进行比较,第一个版本似乎有所不同: 它分配一个自动执行功能的结果。 它在此函数内定义了局部变量。 它返回包含使用局部变量的逻辑的 实际 函数。 因此,主要的区别在于,在第一个变体中,初始化时,bar仅分配一次,而第二个变体在每次调用时都会创建此临时变量。 关于为什么

  • 本文向大家介绍python字典setdefault方法和get方法使用实例,包括了python字典setdefault方法和get方法使用实例的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了python字典setdefault方法和get方法使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在python的字典对象中,可以直接使

  • 我想创建一个建筑地图,每个房间都有字典,包含从列表中随机选择的房间(想想旧的学校文本冒险)。 例如: 但是,我想填充它,以便它与建筑匹配。因此,如果先设置房间A,并将房间B设置为北面,则房间B将房间A设置为南面。 所以: 我不知道最好的方法是什么。我不担心事情的顺序,只要一个房间不会同时在另一个房间的南北两边。