Python:打印带有变量的字典字典
我正在尝试从字典中检索一些值,这应该相当容易 无论出于何种原因,我都不能使用变量来检索值 我有两个字典,一个是UID->用户名的映射(通过getent passwd),另一个是包含每个键的字典,基本上:Python:打印带有变量的字典字典,python,dictionary,Python,Dictionary,我正在尝试从字典中检索一些值,这应该相当容易 无论出于何种原因,我都不能使用变量来检索值 我有两个字典,一个是UID->用户名的映射(通过getent passwd),另一个是包含每个键的字典,基本上: dMap = { 12345678: 'username' } qDict['12345678'] = {'used': '4204224', 'grace': 'none', 'quota': '5242880'} 显然,这两个词典都有更多的值,但我展示的结构是基本概念 qDict的关键是
dMap = { 12345678: 'username' }
qDict['12345678'] = {'used': '4204224', 'grace': 'none', 'quota': '5242880'}
显然,这两个词典都有更多的值,但我展示的结构是基本概念
qDict的关键是uid(应该通过dMap字典映射)
我遇到的问题如下:
for k,v in dMap.items():
print 'Key: ',k
print qDict[k]
当我运行脚本时,我得到:
Traceback (most recent call last):
File "./test.py", line 156, in ?
main()
File "./test.py", line 98, in main
print qDict[k]
KeyError: 26617862
如果我注释掉上面的:print qDict[k]行,并且只打印k的值,则会打印密钥名称,而不会出现问题。我还可以在for循环之外使用实际的键名(12345678)引用字典:
我想做的是让for循环为给定的keyname打印字典,就像打印字典中的字典一样
我认为问题在于(如果你看下一行的#NOTE),我需要以某种方式向dictionary(qDict)提供格式正确的变量
我有没有遗漏什么,或者有没有更简单的方法
PS:我还尝试了使用dMap.keys()等进行for循环。在
dMap
中,键是整数,但在qDict
中,键是字符串
在将整数k
用作qDict
中的键之前,需要将其转换为字符串:
for k in dMap:
print 'Key: ',k
print qDict[str(k)]
您使用不同的键类型构建了这两个词典。一个dict有一个整数键,另一个有一个字符串键 正如@markbyers所说,您可以将整数转换为字符串来进行查找 但是,我建议您改为使用整数键构建
qDict
。无论您的代码在哪里生成qDict
,请将该键包装在int()
中,以强制其为整数键
这两种方法都可以,真的。但是如果
dMap
有int
键和qDict
有str
键,那么qDict
中可能会有一些键不能出现在dMap
中,如果要匹配这两个键,最好是使用相同类型的键。而且int
的效率应该稍微高一点,所以如果你的程序规模较大,它是更好的选择。是的,这就是它!我最近来自perl,我不记得这些相同类型的问题,但我可能错了。。。谢谢你的帮助。谢谢史蒂夫,我将把这两个键转换成一种通用格式。在本例中,我将使用字符串,因为我需要从用于填充字典的输入文件中删除一些垃圾。
for k in dMap:
print 'Key: ',k
print qDict[str(k)]