我正在学习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]
意味着什么以及它在做什么时,我缺少什么?
答案 0 :(得分:2)
如果我在脑海中考虑它
k[0][0]
意味着让我获得字典的第一个元素,然后是第一个子元素。
不,k
是给定键值对的关键。您正在迭代这些项目的对象:
for k,v in Team.items():
每个键值对都分配给名称k
和v
。
鉴于您的词典,字符串和元组中有两种不同类型的键,您的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]
希望这会有所帮助,祝你好运