簡體   English   中英

Python:打印帶有變量的字典字典

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM