我有一本看起來像這樣的字典:
d = {
(1, 'first'): [1],
(1, 'second'): [2],
(1, 'first'): [3],
(2, 'second'): [4],
(2, 'first'): [5],
(2, 'second'): [6]
}
我只想獲取包含 鍵的值second,所以我只會得到:
[2, 4, 6]
有沒有一種簡單的方法,比如.loc在熊貓中?
uj5u.com熱心網友回復:
您可以使用如下所示的簡單函式:
def keyContains(d, expr):
res = []
for k in d.keys():
if expr == k[1]:
res.extend(d[k])
return res
PS:您示例中的兩個鍵是重復的。
uj5u.com熱心網友回復:
我想你要找的是:
numbers = [value[0] for key, value in d.items() if key[1] == 'second']
print(numbers)
輸出:
[2, 6]
值為 4 和 6 的專案具有相同的鍵。1 和 3 也是如此。 因此,當 d 被實體化并且解釋器遍歷這些行時,最終結果只包含:
{
(1, 'first'): [3],
(1, 'second'): [2],
(2, 'first'): [5],
(2, 'second'): [6]
}
uj5u.com熱心網友回復:
你的字典中有重復的鍵,所以它可能不會給出正確的結果。更改字典的鍵,使所有鍵都是唯一的。之后,使用回圈找到它們。使用 分隔鍵和值.items()。鍵將是元組型別。使用 if 陳述句,檢查元組的第二個元素是否為“second”。如果是,則將值收集在串列中并最終列印出來。您的代碼:
d = {
(1, 'first'): [1],
(1, 'second'): [2],
(3, 'first'): [3],
(2, 'second'): [4],
(2, 'first'): [5],
(3, 'second'): [6]
} #unique keys
l=[]
for key,value in d.items():
if key[1]=="second":
l.append(*value)
print(l)
uj5u.com熱心網友回復:
我將向您展示如何使用純 python 和 Pandas 來實作這一點,但我更喜歡純 python 方式
代碼:
# pure python way:
myDict = {
(1, 'first'): [1],
(1, 'second'): [2],
(1, 'first'): [3],
(2, 'second'): [4],
(2, 'first'): [5],
(2, 'second'): [6]
}
myList = []
for key in myDict.keys():
if key[1] == 'second':
myList.append(myDict[key][0])
print(myList)
# output:
[2, 6]
# pandas way:
myDict = {
(1, 'first'): [1],
(1, 'second'): [2],
(1, 'first'): [3],
(2, 'second'): [4],
(2, 'first'): [5],
(2, 'second'): [6]
}
myList = []
df = pd.DataFrame.from_dict(myDict)
for column in df:
if column[1] == 'second'
myList.append(df[column].values[0])
print(myList)
# output:
[2, 6]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/350551.html
