簡體   English   中英

當應該有一個值python時,字典不返回任何內容

[英]dictionary returns none when there should be a value python

我有一個小的樣本數據集:

import pandas as pd


df = {'ID': ['H576','H577','H578','H600', 'H700'],
  'CD': ['AAAAAAA', 'BBBBB', 'CCCCCC','DDDDDD', 'EEEEEEE']}

df = pd.DataFrame(df)

我用熊貓讀了這篇文章,並將這兩列轉換為字典,其中“ ID”為鍵,“ CD”為值:

dictionary = df.set_index('ID')['CD'].to_dict()

因為我需要做其他事情(我不會詳細介紹,這是一個漫長的故事,而我的實際腳本是涉及許多其他事情的長腳本),所以我需要將字典另存為值-鍵對,相反:

reversedic = dict()
for key, val in dictionary.items():
        reversedic.pop(val, key)    #python 2.7 uses dic.append() but for the python I have which is 3.5, 'dict' object has no attribute 'append', so is pop the correct code? 

稍后在較大的腳本中,當給定“ CD”值時,我將需要獲取“ ID”

z = reversedic.get('AAAAAAA')
print(z)

這應該返回了H576,但返回了“ none”。

為什么不直接:

reverseDict = {v:k for k,v in dictionary.iteritems()}

In [14]: reverseDict['AAAAAAA']
Out[14]: 'H576'

從有關dict.pop()的文檔中:

pop(key [,默認])

如果key在字典中,請刪除它並返回其值,否則返回default。 如果未提供默認值,並且字典中沒有key,則會引發KeyError。

如果要將鍵值對添加到字典中,請使用

reversedic[key] = val

pop()返回傳遞給它的key的值。 第二個參數是默認值,如果字典中不存在key ,則返回默認值。

您可以這樣做:

reversedic[key] = value

由於以這種方式創建第一個Dict

dictionary = df.set_index('ID')['CD'].to_dict()

為什么不?

reversedic = df.set_index('CD')['ID'].to_dict()

然后:

z = reversedic.get('AAAAAAA')
print(z)

要么

z = reversedic['AAAAAAA']
print(z)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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