Python 有序词典
我正在尝试创建一个方法,在编号列表中显示字典键。我之所以选择使用字典,是因为键的值(作为列表)中存储了大量数据,而这些数据不显示在此处。Python 有序词典,python,dictionary,ordereddictionary,Python,Dictionary,Ordereddictionary,我正在尝试创建一个方法,在编号列表中显示字典键。我之所以选择使用字典,是因为键的值(作为列表)中存储了大量数据,而这些数据不显示在此处。 例如: 1.鲍勃 2.西蒙 3.菲尔 我用一个简单的for循环实现了这一点 if self.caseload: i = 1 print "" for name in self.caseload: print "%d. %s" % (i, name) i += 1 然后,我希望用户能够使用其
例如:
1.鲍勃
2.西蒙
3.菲尔 我用一个简单的for循环实现了这一点
if self.caseload:
i = 1
print ""
for name in self.caseload:
print "%d. %s" % (i, name)
i += 1
然后,我希望用户能够使用其分配的名称(非常简单)或分配给它的数字来选择其中一个键。这就是我遇到麻烦的地方。因为字典是无序的,而且数字是动态分配的,所以我不知道该怎么做。只要你不从字典中添加或删除键,键的顺序就保持稳定 您可以索引
dict.keys()
列表,它的顺序仍然与您显示键时的顺序相同:
key = self.caseload.keys()[int(userchoice) - 1]
由于Python列表从0开始编制索引,因此必须通过减去1来转换用户输入
<> P>而不是使用手动计数,考虑在打印菜单时使用键来编号:
if self.caseload:
print ""
for i, name in enumerate(self.caseload, 1):
print "%d. %s" % (i, name)
只要不从字典中添加或删除键,键的顺序就会保持稳定 您可以索引
dict.keys()
列表,它的顺序仍然与您显示键时的顺序相同:
key = self.caseload.keys()[int(userchoice) - 1]
由于Python列表从0开始编制索引,因此必须通过减去1来转换用户输入
<> P>而不是使用手动计数,考虑在打印菜单时使用键来编号:
if self.caseload:
print ""
for i, name in enumerate(self.caseload, 1):
print "%d. %s" % (i, name)
你可以用
有序词典与常规词典一样,但它们记住了插入项的顺序
您还可以使用在迭代时获取项的索引
对于i,枚举中的名称(self.caseload,start=1):
打印“%d.%s”%(i,名称)
您可以使用
有序词典与常规词典一样,但它们记住了插入项的顺序
您还可以使用在迭代时获取项的索引
对于i,枚举中的名称(self.caseload,start=1):
打印“%d.%s”%(i,name)
有几种方法可以实现这一点
你可以创建一个新的dict来把数字和名字联系起来
In [2]: d = {'Bob': 'foo', 'Simon': 'bar', 'Phil': 'baz'}
In [3]: e = {n: v for n, v in zip(range(1, len(d)+1), d.keys())}
In [4]: e
Out[4]: {1: 'Bob', 2: 'Simon', 3: 'Phil'}
或者你可以将数字直接链接到字典的值
In [5]: f = {n: v for n, v in zip(range(1, len(d)+1), d.values())}
In [6]: f
Out[6]: {1: 'foo', 2: 'bar', 3: 'baz'}
检查输入是否为数字;如果是这样,您可以使用dict
e
获取名称,也可以使用f
获取值。有几种方法可以实现这一点
你可以创建一个新的dict来把数字和名字联系起来
In [2]: d = {'Bob': 'foo', 'Simon': 'bar', 'Phil': 'baz'}
In [3]: e = {n: v for n, v in zip(range(1, len(d)+1), d.keys())}
In [4]: e
Out[4]: {1: 'Bob', 2: 'Simon', 3: 'Phil'}
或者你可以将数字直接链接到字典的值
In [5]: f = {n: v for n, v in zip(range(1, len(d)+1), d.values())}
In [6]: f
Out[6]: {1: 'foo', 2: 'bar', 3: 'baz'}
检查输入是否为数字;如果是这样,您可以使用dict
e
获取名称,也可以使用f
获取值。这非常有效!我不知道字典即使在临时上下文中也能保持任何形式的秩序。这非常有效!我不知道字典即使在暂时的情况下也能维持任何形式的秩序。