Python字典打印第一个字行为

时间:2017-03-26 10:16:20

标签: python dictionary tuples

我正在学习python,我正在谈论词典。我写了以下字典:

Team={
    ('projectmanager','Asma'): 'Sara',
    ('ba','Richard'): 'Steve',
    ('tester','Asma'): 'Rob',
    'developer1': 'Misbah',
    'developer2': 'Mariam'
}
然后我写了下面的代码:

for k,v in Team.items():
    profile=type(k)
    print('engTeam => {1} {0}'.format(k[0][0],profile))

我得到的输出是:

Team => <class 'str'> e
Team => <class 'str'> d
Team => <class 'tuple'> i
Team => <class 'str'> m
Team => <class 'tuple'> b
Team => <class 'str'> s
Team => <class 'tuple'> p
Team => <class 'str'> e
Team => <class 'str'> a

我不明白为什么要打印所有非元组条目的第一个字符。如果我在脑海中考虑它k[0][0]意味着让我获得字典的第一个元素,然后是第一个子元素。但是非元组的单词没有子元素,所以输出应该是空白的,不应该吗?另外k[0][0]应该打印元组中的整个第一个单词,例如'projectmanager'而不是第一个元组字的第一个字符。在理解k[0][0]意味着什么以及它在做什么时,我缺少什么?

2 个答案:

答案 0 :(得分:2)

  

如果我在脑海中考虑它k[0][0]意味着让我获得字典的第一个元素,然后是第一个子元素。

不,k是给定键值对的关键。您正在迭代这些项目的对象:

for k,v in Team.items():

每个键值对都分配给名称kv

鉴于您的词典,字符串和元组中有两种不同类型的键,您的type()信息会显示您的确切信息;您为这些密钥打印了一系列<class 'str'><class 'type'>

因此,如果k是一个元组,则k[0]是该元组中的第一个元素,k[0][0]是该第一个元素的第一个字符:

>>> k = ('projectmanager', 'Asma')
>>> type(k)
<class 'tuple'>
>>> k[0]
'projectmanager'
>>> k[0][0]
'p'

对于字符串,k[0]将是第一个字符。但是单个字符也是字符串。一个长度为1的字符串,因此获取该字符串的第一个元素是仍为字符串,长度为1:

>>> k = 'developer1'
>>> type(k)
<class 'str'>
>>> k[0]
'd'
>>> type(k[0])
<class 'str'>
>>> len(k[0])
1
>>> k[0][0]
'd'

你不会在这里得到一个空值。

答案 1 :(得分:0)

考虑, 第一个case-key,k被设置为要成为元组。例如('projectmanager','Asma')。因此显然k [0] [0]将打印出p

第二种情况(更棘手的一种)当k被设置为字符串时,k [0]是字符串的第一个元素。 k [0]因此是一个长度为1的字符串 k [0] [0]将访问k [0]的第一个元素,其中k [0]是一个长度为1的字符串。例如当k'developer1'时,{ {1}}为k[0]'d'因此为k[0][0]

希望这会有所帮助,祝你好运