[英]Python: printing dictionary of dictionary with variables
我正在尝试从字典中检索一些值,应该相当容易。
无论出于何种原因,我都无法使用变量来检索值。
我有两个字典,一个字典具有uids->用户名的映射(通过getent passwd),第二个字典包含每个键的字典,基本上是:
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的值,那么键名就不会出现问题。 我还可以使用实际的键名(12345678)在for循环外引用字典:
print dMap[26617862] # this works!
print qDict['26617862'] # this works! #NOTE BELOW
我想要做的就是让for循环为给定的键名打印字典,有点像打印字典的字典...
我认为问题在于(如果您看#NOTE BELOW行以下),我需要以某种方式为字典(qDict)提供格式正确的变量。
我在这里缺少什么,还是有一种更简单的方法来做到这一点?
PS:我还尝试了dMap.keys()等的for循环。
您使用不同类型的键构建了两个字典。 一个字典有一个整数键,另一个字典有一个字符串键。
正如@Mark Byers所说,您可以将整数转换为字符串以进行查找。
但是,我建议您改为使用整数键构建qDict
。 无论您的代码在哪里构建qDict
,都将键包装在int()
以强制其为整数键。
两种方法都行得通,真的。 但是,如果dMap
具有int
键,而qDict
具有str
键,则qDict
中可能有一些键不能出现在dMap
,并且如果两者匹配,则最好使用相同类型的键。 而且int
效率应稍高一些,因此,如果您的程序规模较大,则是更好的选择。
dMap
中的键是整数,但是在qDict
,键是字符串。
您需要先将整数k
转换为字符串,然后才能将其用作qDict
的键:
for k in dMap:
print 'Key: ',k
print qDict[str(k)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.